Rebol3 Code Examplex
Sparkline in unicode
Create compact text-based trend graphs.
Rebol [
title: "Rosetta code: Sparkline in unicode"
file: %Sparkline_in_unicode.r3
url: https://rosettacode.org/wiki/Sparkline_in_unicode
]
print-spark-line: function/with [
"Print a sparkline bar chart for a sequence of numbers"
numbers [string! block! vector!]
][
if string? numbers [numbers: transcode numbers] ;; parse string to block
if block? numbers [numbers: make vector! numbers] ;; normalize to vector
set [mn: mx: extent:] query numbers [:min :max :range] ;; extract stats in one call
line: clear ""
foreach n numbers [
i: 1 + to integer! barcount * (n - mn) / extent ;; map value to bar index
append line bar/(min i barcount) ;; clamp and append bar char
]
printf ["min: " 0.1 " max: " 0.1 " range: " 0.1] [mn mx extent]
print line
print ""
][
bar: "▁▂▃▄▅▆▇█"
barcount: length? bar
]
print-spark-line #(i8![1 2 3 4 5 6 7 8 7 6 5 4 3 2 1])
print-spark-line [1.5 0.5 3.5 2.5 5.5 4.5 7.5 6.5]
print-spark-line "3 2 1 0 -1 -2 -3 -4 -3 -2 -1 0 1 2 3"