wunderbar

Simple horizontal bar chart printer for your terminal

Github stars Tracking Chart

@gribnoysup/wunderbar

Have you ever wanted to print some pretty bar charts in your terminal? You are
in the right place!

wunder-bar-cli-all

Wunderbar can print horisontal bar chart with legend and chart scale straight to
your terminal. Or you can use it as a module in your code and get all the
building blocks to print chart yourself.

Wunderbar uses partial block characters (▏▎▍▌▋▊▉█) to print the most precise
charts possible:

wunder-bar-precise

Use in terminal

echo "[1, 2, 3, 4, 5]", npx @gribnoysup/wunderbar --min 0

wunder-bar-echo-json

cat data.json, npx @gribnoysup/wunderbar --min 0

wunder-bar-cat-file

Use in your code

npm i --save @gribnoysup/wunderbar
const wunderbar = require('@gribnoysup/wunderbar');
const data = require('./data.json');

const printData = () => {
  const { chart, legend, scale, __raw } = wunderbar(data, {
    min: 0,
    length: 42,
  });

  console.log();
  console.log(chart);
  console.log();
  console.log(scale);
  console.log();
};

printData();

Limitations

  • Wunderbar supports only node >= 6

  • Wunderbar uses chalk.hex to add color to your charts. Chalk is pretty
    smart to downgrade the color if it is not supported by your terminal, but
    output may vary in different terminals.

API

wunderbar(values, [options]) ⇒ OutputValue, Param, Type, Default, Description, ----------------------------, --------------------------------------------------------------------------------------------------------, ---------------------, ---------------------------------------------------------------------, values, Array<InputValue>, Values to draw on a chart, [options], Object, Chart drawing options, [options.min], number, min value from values, Min chart value (inclusive), [options.max], number, max value from values, Max chart value (inclusive), [options.length], number, terminal width, Chart length, [options.sort], "min" | "max" | "none" | (a: NormalizedValue, b: NormalizedValue) => number, "none", Sort method for chart values, [options.randomColorOptions], Object, {}, randomColor options for color generation, [options.format], string | (a: number) => string, "0.00", Value format method. String values are Numeral.js format strings, All options are also supported in the cli version:

echo "[1000, 3000, 5000, 7000, 9000, 11000]", \
  npx @gribnoysup/wunderbar --min 0 --max 15000 --length 42 --sort min --randomColorOptions '{ "seed": "unicorn" }' --format "0a"

wunder-bar-cli-all

Types

InputValue :
{ value: number, color?: string, label?: string }, number, string

OutputValue :
{ legend: string, scale: string, chart: string, __raw: RawData }

RawData :
{ chartLength: number, minValue: number, minValueFormatted: string, maxValue: number, maxValueFormatted: string, normalizedValues: NormalizedValue[] }

NormalizedValue :
{ normalizedValue: number, rawValue: number, formattedValue: string, color: string, label: string, lineLength: number, chartBar: string, coloredChartBar: string }

License

MIT

Overview

Name With Ownergribnoysup/wunderbar
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 1)
Platform
License:MIT License
Release Count14
Last Release Namev2.2.2 (Posted on 2019-05-12 12:16:30)
First Release Namev1.0.1 (Posted on 2018-03-07 16:27:27)
Created At2018-03-05 17:56:25
Pushed At2023-01-06 01:32:50
Last Commit At2021-05-07 16:20:07
Stargazers Count574
Watchers Count13
Fork Count21
Commits Count58
Has Issues Enabled
Issues Count4
Issue Open Count0
Pull Requests Count8
Pull Requests Open Count8
Pull Requests Close Count4
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top