histograms
histograms样式只与 2D 绘图相关。它从一系列并行数据列生成条形图。plot命令的每个元素必须指定单个输入数据源 (例如输入文件中的一列),可能有相关的刻度值或要素标题。目前支持 4 种直方图布局。
set style histogram clustered {gap <gapsize>}
set style histogram errorbars {gap <gapsize>} {<linewidth>}
set style histogram rowstacked
set style histogram columnstacked
set style histogram {title font "name,size" tc <colorspec>}
默认样式对应于set style histogram clustered gap 2
。在这种样式中,每组并行数据值被收集到一组箱子中,这些箱子在与选择的数据文件列中的顺序位置(行号)相对应的 x 轴坐标处聚集。因此,如果选择 <n> 数据列,则第一个集群以x=1
为中心,并包含 <n> 个框,其高度取自对应的 <n> 数据列中的第一个条目。接下来是一个间隙,然后是第二个以x=2
为中心的集群框,对应于各个数据列中的第二个条目,以此类推。默认间隙宽度 2 表示集群之间的空白宽度等于两个框的宽度。从任意一列派生的所有框都使用相同的填充颜色和图案 (参见set style fill)。
每个箱子的集群都是从输入数据文件的一行中派生出来的。一般在这样的文件中,每行的第一个元素是标签。通过using中的xticlabels选项,此列中的标签可以沿着 x 轴放在相应的箱子集群下方。
errorbars样式非常类似于clustered样式,只是它的每个条目需要额外的输入列。第一列保存框的高度 (y 值),与clustered样式完全相同。
2 列: y yerr 条形从 y-yerr 延伸到 y+err
3 列: y ymin ymax 条形从 ymin 延伸到 ymax
误差条的外观由set errorbars的当前值和可选的 <linewidth> 规范来控制。
支持两种形式的堆叠直方图,由命令set style histogram {rowstacked|columnstacked}
选择。在这些样式中,来自选定列的数据值被收集到框的堆栈中。正值从y=0
向上堆叠,负值向下堆叠。混合的正负值产生向上和向下的堆叠。默认的堆叠模式是rowstacked。
rowstacked样式为第一个选定列中的每个数据值放置一个放在 x 轴上的框,第一个数据值产生一个x=1
的框,第二个位于x=2
,以此类推。对应于第二和后续列的框被分层放在上方,结果是x=1
处的堆叠框代表每列的第一个数据,x=2
处的框代表每列的第二个数据,以及等等。从任一列派生的所有框都使用相同的填充颜色和图案 (参见set style fill)。
columnstacked样式类似,只是每个堆叠框来自单一列。第一个指定列的每个数据值在x=1
处产生一个堆叠框,第二个指定列的每个数据值在x=2
处堆叠,以此类推。在这种样式中,每个框的颜色取自相应数据段的行号而不是列号。
框的宽度可用set boxwidth命令改变。框的填充样式可以用set style fill命令设置。
直方图总是使用 x1 轴,但可以使用 y1 或 y2。如果图形同时包含直方图和其他绘图类型,那么非直方图可以使用 x1 和 x2 轴。
示例
figure_histclust
假设输入文件中的数据值在第 2, 4, 6, ... 列,而误差估计值在第 3, 5, 7, ... 列,本例将 2 和 4 列的数据绘制为直方图(默认样式)。因为我们在绘图命令中使用了迭代,所以任意数量的数据列都可以在一个命令中处理。参见plot for。
set boxwidth 0.9 relative
set style data histograms
set style histogram cluster
set style fill solid 1.0 border lt -1
plot for [COL=2:4:2] 'file.dat' using COL
这将产生一个以 x 轴上每个整数值为中心的两个框(竖条),如果输入文件的第一列含有标签,可以用下面的变体命令将它们放在 x 轴下方
plot for [COL=2:4:2] 'file.dat' using COL:xticlabels(1)
figure_histerrorbar
如果文件中含有每个值的大小和范围信息,那么可以在图形中附加误差条。下面的命令添加从 (y-<error>) 延伸到 (y+<error>) 的误差条,由与框本身宽度相同的水平横杆结束。误差条和条端点用线宽为 2、当前填充样式中的边框线型绘制。
set errorbars fullwidth
set style fill solid 1 border lt -1
set style histogram errorbars gap 2 lw 2
plot for [COL=2:4:2] 'file.dat' using COL:COL+1
这个演示了用相同的数据绘制为行堆叠直方图。只是为了区别,本例明确列出了单独的列,而不是使用迭代。
set style histogram rowstacked
plot 'file.dat' using 2, '' using 4:xtic(1)
figure_histrows
本例产生的图形中,每个垂直条对应于一行数据。每个垂直条包含两个段的堆叠,其高度对应于数据文件中第 2 和第 4 列的值。
最后命令
set style histogram columnstacked
plot 'file.dat' using 2, '' using 4
figure_histcols
产生两个垂直的堆叠,每个对应一列数据。x=1
处的堆叠包含数据文件中第 2 列的每个条目,x=2
处的堆叠包含数据文件中第 4 列的每个条目。
因为这会互换 gnuplot 对输入行和列的常规解释,所以要素标题和 x 轴的刻度标签也必须相应地修改。参见下面给出的注释。
set style histogram columnstacked
plot '' u 5:key(1) # 用第一列生成要素标题
plot '' u 5 title columnhead # 用第一行生成 xtic 标签
注意,刚给出的两个示例呈现完全相同的数据值,但格式不同。
newhistogram
语法
newhistogram {"<title>" {font "name,size"} {tc <colorspec>}}
{lt <linetype>} {fs <fillstyle>} {at <x-coord>}
一个图表中可以出现一组以上的直方图。在这种情况下,可以用newhistogram命令强制分隔它们,并为每组单独设立标签。例如
set style histogram cluster
plot newhistogram "Set A", 'a' using 1, '' using 2, '' using 3, \
newhistogram "Set B", 'b' using 1, '' using 2, '' using 3
标签 "Set A" 和 "Set B" 出现在对应直方图组的下方,在整个 x 轴标签的下方。
newhistogram 命令也可强制直方图以特定的颜色(线型)开始着色。默认情况下,即使到了直方图边界上,颜色也会持续增加。这里有一个多直方图使用相同颜色的例子
plot newhistogram "Set A" lt 4, 'a' using 1, '' using 2, '' using 3, \
newhistogram "Set B" lt 4, 'b' using 1, '' using 2, '' using 3
同样,也可以强制下一个直方图组使用不同的填充样式。如果填充样式设置为pattern,则用于填充的图案将自动递增。
figure_newhist
at <x-coord>选项设置下一个直方图的 x 坐标位置为 <x-coord>。例如
set style histogram cluster
set style data histogram
set style fill solid 1.0 border -1
set xtic 1 offset character 0,0.3
plot newhistogram "Set A", \
'file.dat' u 1 t 1, '' u 2 t 2, \
newhistogram "Set B" at 8, \
'file.dat' u 2 t 2, '' u 2 t 2
将使得第二个直方图从x=8
开始。
多列自动迭代
如果要从一个单一文件中的许多列数据创建一个直方图,使用绘图迭代特性是非常方便的。参见plot for。例如,从 3 到 8 列数据创建一个堆叠直方图
set style histogram columnstacked
plot for [i=3:8] "datafile" using i title columnhead