使用Julia的Plots包,加上Plotly(JS)做后端,可以方便地绘制出各类漂亮的图表。
前一阵儿,使用Plots包中的plot函数,绘制柱形图(类型参数设置为柱形图,seriestype = :bar)时,还会出错,提示参数不符。现在,又试了一下,发现已经可以使用,直接用plot函数就可以绘制柱形图。
因为需要绘制堆积柱形图,于是就查看Plots的文档,看应该如何设置参数,绘制柱形图。
看起来很简单,只要在plot函数中,将参数“bar_position”设置为“:stack”即可。但文档中还有一句提示,告知堆积参数可能无法完全生效。而柱形图默认的是叠加覆盖(overlay)模式。
尽管如此,还是尝试了一下,果然堆积参数无效,无法绘制出堆积柱形图,仍然是叠加覆盖模式。
于是寻求解决方案。
在Julia中文论坛和国外论坛、GitHub的Plots板块都进行了搜索,发现这的确是一个问题,而且目前似乎也没有解决。看到有网友建议使用StatsPlots包中的groupedbar函数,来实现堆积柱形图的绘制。
但尝试了一下,发现groupedbar所用参数与plot函数不尽相同,而StatsPlots文档中groupdebar的说明也非常“简陋”,只是举了个例子而已。
只好自己根据groupedbar函数的例子进行研究,发现plot函数,使用的数据,参数类型可以是Array(数组,一维或多维均可);而groupedbar函数,对应的数据参数,必须是Matrix(矩阵,即二维数组)类型。因为在这段程序中,要绘制多个图,并将多个图整合在一页;所以就想尽量省事,少使用些函数和变量,不要过于麻烦,仍然想统一用plot函数解决。
到Julia中文论坛,专门提问这个问题,有热心网友 Jun 告知,plot函数一直不支持堆积柱形图,只能用StatsPlots包来解决。
于是,只好改写原来的程序。使用StatsPlots包的gropuedbar函数,并将传入的数据类型改为Matrix,参数“bar_position”设置为“:stack”。其余参数如数据标签、图例等,都和plot函数类似,无需改动。
这样,总算是成功绘制了堆积柱形图,并最后将多个图表进行整合。