本文介绍利用gnuplot绘制直方图与等值线图。
1 直方图
直方图仅用于二维图形。目前支持四种直方图布局样式:
set style histogram clustered {gap }
set style histogram errorbars {gap } {}
set style histogram rowstacked
set style histogram columnstacked
set style histogram {title font "name,size" tc }
默认的直方图样式为:set style histogram clustered gap 2
。在此样式中,每组平行数据值都被收集到一组框中,这些框聚集在与它们在所选数据文件列中的顺序位置(ROW #)相对应的x轴坐标处。
如有下面的统计数据文件immigration.txt,其内容如下所示。注意文本文件中保留第一行表头。
Region Denmark Netherlands Norway Sweden
1891-1900 50231 26758 95015 226266
1901-1910 65285 48262 190505 249534
1911-1920 41983 43718 66395 95074
1921-1930 32430 26948 68531 97249
1931-1940 2559 7150 4740 3960
1941-1950 5393 14860 10100 10665
1951-1960 10984 52277 22935 21697
1961-1970 9201 30606 15484 17116
要生成直方图,可以使用下面的命令:
set style data histogram
plot 'immigration.txt' u 2:xtic(1),'' u 3, '' u 4,''u 5
生成的图形如下图所示。

不是一般的难看,这里需要进行修正。如采用下面的命令,使用修饰词ti col
利用列名称作为图例。
plot 'immigration.txt' u 2:xtic(1) ti col,'' u 3 ti col, '' u 4 ti col,''u 5 ti col
生成图形如下图所示。

下面继续进行修改。
set auto x
set yrange [0:300000]
set style histogram cluster gap 1
replot
生成图形如下图所示。

美观了不少,但还是没有达到要求。这里将柱形使用不同颜色进行填充。
set style fill solid border -1
replot
图形变为下面的样子。

基本满足要求,不过x轴标签太过于拥挤,这里可以使用命令将其旋转一定的角度。
set xtic rotate by -45
replot
此时完成的图形如下图所示。

到现在图形已经OK了。
我们也可以使用rowstacked
模式,该模式可以将各类数据堆放在一起。
set style histogram rowstacked
set boxwidth 0.8 relative
replot
生成图形如下图所示。

总结来说,绘制其直方图,可以采用下面的命令:
set auto x
set yrange [0:300000]
set style data histogram
set style histogram cluster gap 1
# 填充柱形图
set style fill solid border -1
# 设置条带宽度0.9
set boxwidth 0.9
# rotte by -45表示x轴标签旋转-45°
set xtic rotate by -45
# xtic(1)表示以第一列数据作为x轴的标签
plot 'immigration.txt' u 2:xtic(1) ti col,'' u 3 ti col, '' u 4 ti col,''u 5 ti col
2 等值线图
等值线图在实际应用中也较为频繁。一个简单的等值线图
# 设置使用等值线图
set contour
# 绘制函数x*y的等值面
splot x*y
生成图形如下图所示。

当然,这图比较粗糙,我们可以调整参数。
set samples 25
set isosamples 25
set key at screen 1.0,0.9
replot
此时图形变成下面这样:

这里可以增加等值线的数量:
# 设置图例的数量
set cntrparam levels 15
replot
图形变为下面这样:

还可以设置等值线的范围:
# 设置图例的变化区间
set cntrparam levels incr -100,10,100
replot
图形变成下面这样。

若想要数字标签,则可以使用:
# 显示等值线的值
splot x*y with lines,x*y with labels
unset key
replot
图形变成了下面这样:

若想要仅显示等值图,可以使用命令:
unset surface
# 设置视图
set view map
replot
图形变为下面的形式:

添加其他信息后图形如下所示。

本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册