Nerds Publishing Monstrosities

    asciichart
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/asciichart package

    1.5.25 • Public • Published

    asciichart

    npm PyPI Travis Coverage Status license

    Console ASCII line charts in pure Javascript (for NodeJS and browsers) with no dependencies. This code is absolutely free for any usage, you just do whatever the fuck you want.

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

    Usage

    NodeJS

    npm install asciichart
    var asciichart = require ('asciichart')
    var s0 = new Array (120)
    for (var i = 0; i < s0.length; i++)
        s0[i] = 15 * Math.sin (* ((Math.PI * 4) / s0.length))
    console.log (asciichart.plot (s0))

    Browsers

    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            <meta charset="UTF-8">
            <title>asciichart</title>
            <script src="asciichart.js"></script> 
            <script type="text/javascript">
                var s0 = new Array (120)
                for (var i = 0; i < s0.length; i++)
                    s0[i] = 15 * Math.sin (* ((Math.PI * 4) / s0.length))
                console.log (asciichart.plot (s0))
            </script> 
        </head>
        <body>
        </body>
    </html>

    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 (* ((Math.PI * 4) / s0.length))
    console.log (asciichart.plot (s0))
    Console ASCII Line charts in pure Javascript (for NodeJS and browsers)

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

    var config = {
     
        offset:  3,          // axis offset from the left (min 2)
        padding: '       ',  // padding string for label formatting (can be overrided)
        height:  10,         // any height you want
     
        // the label format function applies default padding
        format:  function (x, i) { return (padding + x.toFixed (2)).slice (-padding.length) }
    }

    Scale To Desired Height

    Console ASCII Line charts in pure Javascript (for NodeJS and browsers)
    var s = []
    for (var i = 0; i < 120; i++)
        s[i] = 15 * Math.cos (* ((Math.PI * 8) / 120)) // values range from -15 to +15
    console.log (asciichart.plot (s, { height: 6 }))     // this rescales the graph to ±3 lines
    Console ASCII Line charts in pure Javascript (for NodeJS and browsers)

    Auto-range

    var s2 = new Array (120)
    s2[0] = Math.round (Math.random () * 15)
    for (= 1; i < s2.length; i++)
        s2[i] = s2[- 1] + Math.round (Math.random () * (Math.random () > 0.5 ? 2 : -2))
    console.log (asciichart.plot (s2))
    Console ASCII Line charts in pure Javascript (for NodeJS and browsers)

    Multiple Series

    var s2 = new Array (120)
    s2[0] = Math.round (Math.random () * 15)
    for (= 1; i < s2.length; i++)
        s2[i] = s2[- 1] + Math.round (Math.random () * (Math.random () > 0.5 ? 2 : -2))
     
    var s3 = new Array (120)
    s3[0] = Math.round (Math.random () * 15)
    for (= 1; i < s3.length; i++)
        s3[i] = s3[- 1] + Math.round (Math.random () * (Math.random () > 0.5 ? 2 : -2))
     
    console.log (asciichart.plot ([ s2, s3 ]))
    Console ASCII Line charts in pure Javascript (for NodeJS and browsers)

    Colors

    var arr1 = new Array (120)
    arr1[0] = Math.round (Math.random () * 15)
    for (= 1; i < arr1.length; i++)
        arr1[i] = arr1[- 1] + Math.round (Math.random () * (Math.random () > 0.5 ? 2 : -2))
     
    var arr2 = new Array (120)
    arr2[0] = Math.round (Math.random () * 15)
    for (= 1; i < arr2.length; i++)
        arr2[i] = arr2[- 1] + Math.round (Math.random () * (Math.random () > 0.5 ? 2 : -2))
     
    var arr3 = new Array (120)
    arr3[0] = Math.round (Math.random () * 15)
    for (= 1; i < arr3.length; i++)
        arr3[i] = arr3[- 1] + Math.round (Math.random () * (Math.random () > 0.5 ? 2 : -2))
     
    var arr4 = new Array (120)
    arr4[0] = Math.round (Math.random () * 15)
    for (= 1; i < arr4.length; i++)
        arr4[i] = arr4[- 1] + Math.round (Math.random () * (Math.random () > 0.5 ? 2 : -2))
     
    var config = {
        colors: [
            asciichart.blue,
            asciichart.green,
            asciichart.default, // default color
            undefined, // equivalent to default
        ]
    }
     
    console.log (asciichart.plot([ arr1, arr2, arr3, arr4 ], config))
    Console ASCII Line charts in pure Javascript (for NodeJS and browsers)

    See Also

    A util by madnight for drawing Bitcoin/Ether/altcoin charts in command-line console: bitcoin-chart-cli.

    bitcoin-chart-cli

    Ports

    Special thx to all who helped port it to other languages, great stuff!

    Future work (coming soon, hopefully)

    • levels and points on the graph!
    • even better value formatting and auto-scaling!

    preview

    Install

    npm i asciichart

    DownloadsWeekly Downloads

    3,910

    Version

    1.5.25

    License

    MIT

    Unpacked Size

    39.8 kB

    Total Files

    20

    Last publish

    Collaborators

    • x84
    • xpl