1.0.15 • Published 8 years ago

zibar v1.0.15

Weekly downloads
1,038
License
BSD-2-Clause
Repository
github
Last release
8 years ago

Zibar

Pretty graphs for the terminal

screenshot from 2016-01-12 21 48 11

Inspired from babar and sparkline. This actually mixes features of both.

Installation

npm install zibar -g

If you don't know what npm is, read this.

Usage

zibar [-c config-file] [ - ] [ value1 [value2..]]

Data can be read from stdin

screenshot from 2016-01-12 21 45 55

Configuration allows fancy rendering

screenshot from 2016-01-12 21 48 51

{
  "height": 5,
  "min": 0,
  "high": 40,
  "marks": [ 0, "?", 0, 0, { "symbol": "▼", "color": "red,bold" } ],
  "color": "green",
  "colors": {
    "5": "magenta,bold"
  },
  "vlines": [null, null, "cyan"],
  "yAxis": {
    "decimals": 0
  },
  "xAxis": {
    "interval": 2,
    "color": "yellow,bold"
  }
}

Or minimal sparkline style

screenshot from 2016-01-12 21 59 47

{
  "height": 1,
  "min": 0,
  "color": "yellow,bold",
  "yAxis": {
    "display": false
  },
  "xAxis": {
    "display": false
  }
}

Configuration

{
  "height": 5,                 // graph height
  "color": "green",            // bar color
  "background": "blue",        // graph background color
  "min": 0,                    // minimum value, clips values below
  "max": 10,                   // maximum value, clips values above
  "low": 3,                    // soft minimum, values below are also shown
  "high": 6.                   // soft maximum, values above are also shown
  "chars": " ⡀⡀⡄⡄⡆⡆⡇⡇⡇",     // characters used for the bars, defaults to unicode block elements
  "marks": [ 0,                // markers chars above the graph
            "?",               // can be an array or integer-indexed object
            null,
            0,
            { "symbol": "▼",   // use objects to add styling
              "color": "red" }
            ],
  "colors": {                  // custom colors for values
    "5": "magenta,bold"        // can be an array or integer-indexed object
  },
  "vlines":
    [null, null, "cyan"],      // vertical lines markers
  "yAxis": {
    "display": true,           // show/hide the axis labels
    "color": "yellow",         // axis label color
    "ticks": true,             // show/hide axis ticks
    "decimals": 0              // number of decimals in axis labels
  },
  "xAxis": {
    "display": true,           // show/hide the axis labels
    "color": "yellow",         // axis label color
    "interval": 2,             // distance between labels
    "origin": 10,              // axis scale starts with this value
    "factor": 2,               // axis scale multiplier
    "offset": 3                // relative position of the label to its default
  }
}

Rendering glitches

The terminal and its font must support unicode. Ensure you have one, e.g. Source Code Pro.

If some blocks looks weird, try the following config options.

"badBlock": true,
"fixFull": true

Using as a library

npm install zibar --save
var zibar = require('zibar');
var graph = zibar(data, config);  // returns the graph as a string

Example

var graph = zibar([30, 12, 9.8, 31, 14, 31.5, 4, 6, 22, 33, 4, 22],
                  {
                    "height": 1,
                    "min": 0,
                    "color": "yellow,bold",
                    "yAxis": {
                      "display": false
                    },
                    "xAxis": {
                      "display": false
                    }
                  });
process.stdout.write(graph);

Formatting

When using as a library, you can pass a function for formatting x and y axis labels.

format: function(x) { return require('roman-numerals').toRoman(x); }

Scale Transform

For non-linear y scale, you can pass a function and its inverse to transform the scale.

tranform: function(x) { return Math.log(x)/Math.log(10); }
inverse: function(x) { return Math.pow(10,x); }
1.0.15

8 years ago

1.0.14

8 years ago

1.0.13

8 years ago

1.0.12

8 years ago

1.0.11

8 years ago

1.0.10

8 years ago

1.0.9

8 years ago

1.0.8

8 years ago

1.0.7

8 years ago

1.0.6

8 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago

0.0.0

8 years ago