通常我们想象中的数据图表是色彩鲜艳,至少是这样的:
显然,这无法在终端上上做到。终端看起来只能显示字符,但是,能否用字符来绘制图表呢?UnicodePlots 在这方面作出了一点努力,可以在终端中显示出图表。
建议在 Linux 上,或者 Mac 上实验,终端支持多色更佳。
UnicodePlots 安装
在 REPL 中输入 ]
,进入包管理模式,接着输入 addUnicodePlots
功能简介
plt = lineplot([-1, 2, 3, 7], [-1, 2, 9, 4], title = "Example Plot", name = "my line", xlabel = "x", ylabel = "y")
还能选择其它的画布 Canvas
,对于需要打印(想不开的时候)出来的时候,使用 AsciiCanvas
, DotCanvas
或者 BlockCanvas
可能会有更好的效果。
lineplot([-1, 2, 3, 7], [-1, 2, 9, 4], title = "Example Plot", name = "my line", xlabel = "x", ylabel = "y", canvas = DotCanvas, border = :ascii)
Julia 约定了加 !
结尾的函数名可能会修改传入的形参。类似 MATLAB,可以使用 lineplot!
在原有的图表上新增曲线:
lineplot!(plt, [0, 4, 8], [10, 1, 10], color = :blue, name = "other line")
示例
散点图(ScatterPlot)
scatterplot(randn(50), randn(50), title = "My Scatterplot")
折线图(Lineplot)
除了简单的绘制点,还能传递函数:
plt = lineplot([cos, sin], -π/2, 2π)
梯状图(Staircase Plot)
stairs([1, 2, 4, 7, 8], [1, 3, 4, 2, 7], color = :red, style = :post, title = "My Staircase Plot")
条形图(Barplot)(水平)
barplot(["Paris", "New York", "Moskau", "Madrid"],
[2.244, 8.406, 11.92, 3.165],
title = "Population")
也可以传递一个字典,但是字典的键值对是无序的,这点上需要注意:
julia> d = Dict("paris" => 2.244, "New York" => 8.406, "Moskau" => 11.92, "Madrid" => 3.16);
julia> barplot(d, title = "Population")
直方图(Histogram)(水平)
histogram(randn(1000) .* 0.1, nbins = 15, closed = :left)
箱线图(Boxplot)(水平)
boxplot([1,3,3,4,6,10])
箱线图由5个数值组成:最小值、下四分位数、中位数、上四分位数、最大值。
稀疏分布
using SparseArrays
spy(sprandn(50, 120, .05))
稀疏数组包含足够多的零,在标准库中提供了 SparseArrays
,会将它存在特殊的数据结构中,从而节省空间和执行时间。
密度图
julia> densityplot(randn(1000), randn(1000))
最后
对于字符图画,可能熟悉 Linux 操作朋友并不陌生,很多 Linux 软件启动时都带有类似的字符图画,但是用来绘制图表,不失为一种很有趣的尝试。这样在某些没有界面的服务器上折腾的时候,也可以适当做一些简单的可视化操作,不再是纯粹的字符。
最后娱乐一下,如果是使用 Linux 或 Mac OSX的话呢,可以在终端输入curl wttr.in
人类,还是很有趣的嘛~