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

results matching ""

    No results matching ""