GNUPLOT绘图软件学习笔记(2)柱状图绘制基础

柱状图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)

此时得到的图像为:
在这里插入图片描述
比之前看上去舒服点了。

至此举例结束,学习中参考了很多优秀的教程,在此记录下我的学习笔记,感谢前辈们的付出!