其他
把你用R画的图(base或ggplot2)变成ASCII纯文本!
ASCII画图,好处多多:
签名档装逼(曾经的论坛/QQ签名)
终端直接出图
log文件出图
第一点,我删掉了,因为时代变了,它还暴露年龄,没人玩这个了。
终端直接出图,这一点很重要,因为有时候你只是瞄一眼,而你的终端是ssh到服务器上,这时候如果服务器没开X-server,那你想看一下图,就得生成文件,然后传到本地,再看。费时费力啊。即使你本地,比如说WSL,你也可以不用为了看一张图而专门去开X-server。第三点,你自己写程序的话,计算过程写Log文件,纯文本的,你现在也可以考虑在log文件里写ASCII图了,纯文本嘛,而图又能快速传达信息。
当年在《Y叔要求职》一文中,我就画了一个散点图,说我每年发表一作文章的数目。用的就是ASCII纯文本的。
还写过一篇《纯文本可视化FASTQ质量数据》用凹凸凹凸的形状来展示测序质量:
但这些毕竟是针对特殊的类型,第一个用了txtplot
包,第二个用了pillar
包。txtplot
算是功能强大了,可以画散点、曲线、柱状图和箱式图。但毕竟能出的图太有限了。如果用base plot
和ggplot2
出的图,都能够变成ASCII的话,那就太爽了,而且我前面谈到的,也就能够轻松实现。
这得益于一个R包,devout
。
通常R的画图设备是C/C++:
而devout
让你用纯R代码实现画图设备:
这个包带了一个ascii()
的设备,于是你画图,在这个设备上画出来,就是ASCII码。来个实例,这可是小提琴图,变ASCII,就是这么简单。
base plot呢?照常支持:
让我们来画个饼图吧:
> ascii()
> pie(c(1,3,5))
> invisible(dev.off())
2#########
##### #####
### ####
## ###
# ### ##1
#### ### ##
# ####### ### #
## ###################
# #
## ##
## ##
## ##
### ###
##### #####
3 ######
来个曲线图吧:
> ascii()
> ggplot(mtcars, aes(disp, mpg)) + geom_line()
> invisible(dev.off())
35 O
O
30 .....
........
25 O
........
m
p 20 O
g ........ ....... ..
........ ....... ........ ....... ....
15 O
........ ....... ........ ....... ........ ....... ....... ........
10 O
......100....... ......200....... ......300....... .....400........ .......
disp
再来个柱状图:
> ascii()
> ggplot(mtcars, aes(factor(cyl))) + geom_bar()
> invisible(dev.off())
.............. ...................... ............xxxxxxxxxxxxxxxxxxxxx....
.............. ...................... ............xxxxxxxxxxxxxxxxxxxxx....
xxxxxxxxxxxxxxxxxxxxx
...xxxxxxxxxxxxxxxxxxxxxx............ ............xxxxxxxxxxxxxxxxxxxxx....
O xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx
10 ...xxxxxxxxxxxxxxxxxxxxxx............ ............xxxxxxxxxxxxxxxxxxxxx....
...xxxxxxxxxxxxxxxxxxxxxx............ ............xxxxxxxxxxxxxxxxxxxxx....
c xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx
o ...xxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxx....
u ...xxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxx....
n 5 O xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx
t ...xxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxx....
...xxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxx....
xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx
...xxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxx....
...xxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxx....
0 O xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx
.............4O.....................6O.....................8O..............
factor(cyl)
往期精彩