Skip to main content

asciichart

Console ASCII line charts with no dependencies.

This is a port of the npm package asciichart by Igor Kroitor

Console ASCII Line charts in pure Javascript (for NodeJS and browsers)

Usage

import { plot } from "deno.land/x/chart/mod.ts";

var s0 = new Array(120);
for (var i = 0; i < s0.length; i++) s0[i] = 15 * Math.sin(i * ((Math.PI * 4) / s0.length));

console.log(plot(s0));

you can also run test.ts if you want to see how it looks.

deno run https://deno.land/x/chart/test.ts

Options

The width of the chart will always equal the length of data series. The height and range are determined automatically.

var s0 = new Array(120);
for (var i = 0; i < s0.length; i++) s0[i] = 15 * Math.sin(i * ((Math.PI * 4) / s0.length));

console.log(plot(s0));

The output can be configured by passing a second parameter to the plot(series, config) function. The following options are supported:

interface config {
  min?: number,      // y-axis minimum range
  max?: number,      // y-axis maximum range
  offset?: number,   // axis offset from the left (min 2)
  padding?: string,  // padding string for label formatting (can be overrided)
  height?: number,   // any height you want
  colors?: string[], // set colors for the output
  symbols?: string[] // change drawing symbols
  format?: any       // the label format function applies default padding
}

Height

var s = [];
for (var i = 0; i < 120; i++) s[i] = 15 * Math.cos(i * ((Math.PI * 8) / 120)); // values range from -15 to +15

console.log(plot(s, { height: 6 })); // this rescales the graph to 6 lines

Auto-range

var s2 = new Array(120);
s2[0] = Math.round(Math.random() * 15);
for (i = 1; i < s2.length; i++) s2[i] = s2[i - 1] + Math.round(Math.random() * (Math.random() > 0.5 ? 2 : -2));

console.log(plot(s2));

Multiple Series

var s2 = new Array(120);
s2[0] = Math.round(Math.random() * 15);
for (i = 1; i < s2.length; i++) s2[i] = s2[i - 1] + Math.round(Math.random() * (Math.random() > 0.5 ? 2 : -2));

var s3 = new Array(120);
s3[0] = Math.round(Math.random() * 15);
for (i = 1; i < s3.length; i++) s3[i] = s3[i - 1] + Math.round(Math.random() * (Math.random() > 0.5 ? 2 : -2));

console.log(plot([s2, s3]));

Colors

var arr1 = new Array(120);
arr1[0] = Math.round(Math.random() * 15);
for (i = 1; i < arr1.length; i++) arr1[i] = arr1[i - 1] + Math.round(Math.random() * (Math.random() > 0.5 ? 2 : -2));

var arr2 = new Array(120);
arr2[0] = Math.round(Math.random() * 15);
for (i = 1; i < arr2.length; i++) arr2[i] = arr2[i - 1] + Math.round(Math.random() * (Math.random() > 0.5 ? 2 : -2));

var arr3 = new Array(120);
arr3[0] = Math.round(Math.random() * 15);
for (i = 1; i < arr3.length; i++) arr3[i] = arr3[i - 1] + Math.round(Math.random() * (Math.random() > 0.5 ? 2 : -2));

var arr4 = new Array(120);
arr4[0] = Math.round(Math.random() * 15);
for (i = 1; i < arr4.length; i++) arr4[i] = arr4[i - 1] + Math.round(Math.random() * (Math.random() > 0.5 ? 2 : -2));

var config = { colors: [ 'blue', 'green', 'red', 'magenta' ] };

console.log(plot([arr1, arr2, arr3, arr4], config));

License

This software is distributed under The MIT License