README.md

# asciichart

[![Hex version badge](https://img.shields.io/hexpm/v/asciichart.svg)](https://hex.pm/packages/asciichart) [![codecov](https://codecov.io/gh/sndnv/asciichart/graph/badge.svg?token=EVAYGZRRZB)](https://codecov.io/gh/sndnv/asciichart) [![license](https://img.shields.io/github/license/sndnv/asciichart.svg)]()

Terminal ASCII line charts in Elixir with no dependencies.

<img width="789" alt="Terminal ASCII line charts in Elixir" src="https://cloud.githubusercontent.com/assets/1294454/22818709/9f14e1c2-ef7f-11e6-978f-34b5b595fb63.png">

Ported to Elixir from [kroitor/asciichart](https://github.com/kroitor/asciichart)

## Install

Add `asciichart` to the list of dependencies in `mix.exs`:

```elixir
def deps do
  [{:asciichart, "~> <version>"}]
end
```

## Usage

```elixir
{:ok, chart} = Asciichart.plot([1, 2, 3, 3, 2, 1])
chart |> IO.puts()

# should render as

3.00 ┤ ╭─╮
2.00 ┤╭╯ ╰╮
1.00 ┼╯   ╰
```

## Options
One or more of the following settings can be provided:
- `offset` - number of characters to set as the chart's (left) offset
- `height` - adjusts the height of the chart
- `padding` - one or more characters to use for the label's (left) padding
- `charset` - a customizable character set. See `Asciichart.Charset`.
- `precision` - number of fractional digits to keep for floating-point values

```elixir
{:ok, chart} = Asciichart.plot([1, 2, 5, 5, 4, 3, 2, 100, 0], height: 3, offset: 10, padding: "__")
chart |> IO.puts()

# should render as

       ╭─> label
    ------
    100.00    ┼      ╭╮
    _50.00    ┤      ││
    __0.00    ┼──────╯╰
    --
---- ╰─> label padding
 ╰─> remaining offset (without the label)

# Rendering of empty charts is not supported

Asciichart.plot([])
{:error, "No data"}
```
If you want to change the character set, you can use a predefined one in `Asciichart.Charset` or create your own.
```elixir
{:ok, chart} = Asciichart.plot([1, 2, 5, 5, 4, 3, 2, 0], height: 5, charset: Asciichart.Charset.single_char("*"))
chart |> IO.puts()

5.00 ┤ ***
3.75 ┤ * **
2.50 ┤ *  **
1.25 ┤**   **
0.00 **     *
```

## Versioning
We use [SemVer](http://semver.org/) for versioning.

## License
This project is licensed under the Apache License, Version 2.0 - see the [LICENSE](LICENSE) file for details

> Copyright 2018 https://github.com/sndnv
>
> Licensed under the Apache License, Version 2.0 (the "License");
> you may not use this file except in compliance with the License.
> You may obtain a copy of the License at
>
> http://www.apache.org/licenses/LICENSE-2.0
>
> Unless required by applicable law or agreed to in writing, software
> distributed under the License is distributed on an "AS IS" BASIS,
> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> See the License for the specific language governing permissions and
> limitations under the License.