•  


GitHub - kroitor/asciichart: Nice-looking lightweight console ASCII line charts ??? for NodeJS, browsers and terminal, no dependencies
Skip to content

Nice-looking lightweight console ASCII line charts ??? for NodeJS, browsers and terminal, no dependencies

License

Notifications You must be signed in to change notification settings

kroitor/asciichart

Repository files navigation

asciichart

npm PyPI Travis Coverage Status license

Console ASCII line charts in pure Javascript (for NodeJS and browsers) with no dependencies.

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
 (
i
 *
 (
(
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
 (
i
 *
 (
(
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
 (
i
 *
 (
(
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 overridden)

    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
 (
i
 *
 (
(
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
 (
i
 =
 1
;
 i
 <
 s2
.
length
;
 i
++
)

    s2
[
i
]
 =
 s2
[
i
 -
 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
 (
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
 (
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
 (
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
: 
[

        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

- "漢字路" 한글한자자동변환 서비스는 교육부 고전문헌국역지원사업의 지원으로 구축되었습니다.
- "漢字路" 한글한자자동변환 서비스는 전통문화연구회 "울산대학교한국어처리연구실 옥철영(IT융합전공)교수팀"에서 개발한 한글한자자동변환기를 바탕하여 지속적으로 공동 연구 개발하고 있는 서비스입니다.
- 현재 고유명사(인명, 지명등)을 비롯한 여러 변환오류가 있으며 이를 해결하고자 많은 연구 개발을 진행하고자 하고 있습니다. 이를 인지하시고 다른 곳에서 인용시 한자 변환 결과를 한번 더 검토하시고 사용해 주시기 바랍니다.
- 변환오류 및 건의,문의사항은 juntong@juntong.or.kr로 메일로 보내주시면 감사하겠습니다. .
Copyright ⓒ 2020 By '전통문화연구회(傳統文化硏究會)' All Rights reserved.
 한국   대만   중국   일본