柱状图histogram绘制举例
继续之前的学习笔记,这次总结一下如何绘制柱状图。
继续使用之前的数据,稍作改动如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # A、B两地一年平均气温对比(℃) 月 A B 不老实的列 1月 1.2 10.0 1.1 2月 5.1 15.6 2 3月 10.2 20.0 3.5 4月 25.4 21.3 4.3 5月 27.9 22.3 5.6 6月 30.0 23.0 6.3 7月 32.0 28.0 7.3 8月 33.1 26.8 8.6 9月 28.0 25.5 9.7 10月 25.0 25.0 10.1 11月 19.0 18.0 11.3 12月 2.5 13.5 12.2 |
注意gnuplot是根据行与列画图的,数据中同一列之间没有空格,例如这里“1月”不能为了对齐美观写成“1 月”
程序代码如下:
1 2 3 4 5 6 | set term pngcairo size 1000,800 set output 'C:\\Users\\wenha\\Desktop\\outcome.png' set style data histogram set style histogram clustered gap 1 set style fill solid 0.5 border plot "C:\\Users\\wenha\\Desktop\\csdn-gnuplot-example\\example.txt" using 2: xticlabels (1) title columnheader (2), "C:\\Users\\wenha\\Desktop\\csdn-gnuplot-example\\example.txt" using 3: xticlabels (1) title columnheader (3) |
这里我将输出设置为了png的形式,设置方式就是开头两行,可以不加。注意一定根据实际情况修改路径。
还有一定要注意输入规范的问题,有些网友提出gnuplot作图之后会闪退,就是明明看上去很对的一张图,刚一输出就关闭了,其实你可以使用png的形式输出一遍看看图是不是真的对,如果有问题,请检查原始数据格式,是不是加了不该加的空格,以及程序中是不是用了中文输入法。对于中文输入法的问题一定要仔细检查,我就用错过“:”与":" 这样的细节很难发现。
程序写好后运行得出结果:
上面的程序可以保存作为模板,需要作图的时候直接复制粘贴并修改相关参数即可。
这里简单讲解程序,开头两句是设置输出为png图片,可以不写,默认窗体输出。
set style data histogram 设置柱状图输出
set style histogram clustered gap 1 设置柱状图输出模式,clustered集群模式就像上图那样,此外还可以设置成rowstacked列堆叠模式,指的是数据相加,比如下面这样:
这个之后还会讲到,先接着讲gap 1。这个表示空白部分宽度是数据柱宽度的1倍。
set style fill solid 0.5 border 设置填充风格。
填充风格的语句是 set style fill
solid表示用纯色填充 后面的数字表示色彩深浅,范围从0到1。色彩还可以设置透明效果,例如语句set style fill transparent solid 0.5。此时与前面不同的是这里的数字表示透明度。
border表示的是填充后带边框,如果不想显示边框,则改成noborder即可。
如果需要黑白打印,可以设置填充图案代替颜色,此时语句:
set style fill transparent pattern 1 border
xticlabels (1)表示第一列的内容作为x轴标注,内容可以自己指定,汉字和英文都行。
title的设置为columnheader(n),表示使用第n列的第一行作为该组数据的标题。
接着说堆叠模式,看图中感觉比较奇怪,每一组都紧挨着,这个需要用set boxwidth 设置相对柱状图占用每一格的位置。此外为了节省空间,我们使用 rotate 命令设置显示标签的倾斜角度。
例如程序:
1 2 3 4 5 6 7 8 | set term pngcairo size 1000,800 set output 'C:\\Users\\wenha\\Desktop\\outcome.png' set style data histogram set style histogram rowstacked set style fill solid 0.5 border set boxwidth 0.8 relative set xtics rotate by -45 plot "C:\\Users\\wenha\\Desktop\\csdn-gnuplot-example\\example.txt" using 2: xticlabels (1) title columnheader (2), "C:\\Users\\wenha\\Desktop\\csdn-gnuplot-example\\example.txt" using 3: xticlabels (1) title columnheader (3) |
此时得到的图像为:
比之前看上去舒服点了。
至此举例结束,学习中参考了很多优秀的教程,在此记录下我的学习笔记,感谢前辈们的付出!