kroitor / asciichart

Nice-looking lightweight console ASCII line charts ╭┈╯ for NodeJS, browsers and terminal, no dependencies
MIT License
1.84k stars 94 forks source link

it is not ascii chart #2

Closed diphuaji closed 6 years ago

diphuaji commented 6 years ago

characters from base ASCII table range from 0 to 127 and those from extended ASCII table are within 0 to 255. the characters used in the project fall outside of either of the two ranges.

kroitor commented 6 years ago

Yep, thanks, I agree! This is not an ASCII chart to be formally strict. The box-drawing symbols were initially configurable, later I decided to remove that option, but the title remained the same.

evert commented 5 years ago

I just ran into this as well. This is how it looks like on my vt320

img_20190125_144126

kroitor commented 5 years ago

@evert wow! cool term, man! )

In order to display it in true ASCII 0-127, you can change the drawing symbols, like so:

        for (let y = min2; y <= max2; ++y) { // axis + labels
            let label = format (max - (y - min2) * range / rows, y - min2)
            result[y - min2][Math.max (offset - label.length, 0)] = label
            result[y - min2][offset - 1] = (y == 0) ? '┼' : '┤'  // ←--------- change this to + and |
        }

        let y0 = Math.round (series[0] * ratio) - min2
        result[rows - y0][offset - 1] = '┼' // first value // ←--------- change this to +

        for (let x = 0; x < series.length - 1; x++) { // plot the line
            let y0 = Math.round (series[x + 0] * ratio) - min2
            let y1 = Math.round (series[x + 1] * ratio) - min2
            if (y0 == y1) {
                result[rows - y0][x + offset] = '─' // ←-------- change this to a dash -
            } else {
                result[rows - y1][x + offset] = (y0 > y1) ? '╰' : '╭' // ←- change this to \ and /
                result[rows - y0][x + offset] = (y0 > y1) ? '╮' : '╯' // ←- change this to \ and /
                let from = Math.min (y0, y1)
                let to = Math.max (y0, y1)
                for (let y = from + 1; y < to; y++) {
                    result[rows - y][x + offset] = '│' // ← change this to a small vertical bar |
                }
            }
        }

↑ that, however, requires editing the source code of the package. I'll think on restoring config options for drawing symbols as well.

DoktorJ commented 4 years ago

FWIW the option has been reimplemented at this point, so you can specify the characters you want to use (such as "+", "-", "|", "/", "\" or whatever else).