【发布时间】:2016-06-29 05:15:00
【问题描述】:
我正在使用 gnuplot 的 STATS 绘制一些数据的中位数。
在图表的右侧,中位数与图表边界相交的地方,我想放置一个标签,说明中位数的值 - 或者它与预定最大值的百分比。
我怎样才能最好地做到这一点?
【问题讨论】:
标签: plot statistics label gnuplot median
我正在使用 gnuplot 的 STATS 绘制一些数据的中位数。
在图表的右侧,中位数与图表边界相交的地方,我想放置一个标签,说明中位数的值 - 或者它与预定最大值的百分比。
我怎样才能最好地做到这一点?
【问题讨论】:
标签: plot statistics label gnuplot median
您可以使用标签。语法是
set label id "text" at x-coordinate,y-coordinate
其中 id 是可选的(但如果您需要更改标签或稍后将其删除时很有用)。有关所有选项(包括对齐和字体选项),请参见 help label。
还要注意,gnuplot 有多个坐标系。有关这些信息,请参阅help coordinates。
要在右侧 y 坐标 10 处放置一个带中值的标签(例如),您可以使用如下命令:
set label 1 sprintf("%f",STATS_median) at graph 1, first 10
我们使用 sprintf 将我们的数值转换为标签的字符串。我们为 x 坐标指定图形坐标系。该系统从 0(左)到 1(右)运行,y 值从上到下也是如此。当我们需要在不知道确切坐标的情况下处理相对位置时,它很有用。我们为 y 坐标指定第一个坐标系。该系统对应x1和y1轴使用的系统。
请注意,当在图表之外放置标签时(我们在此处已完成),有时需要增加边距。有关详细信息,请参阅help margins。像set rmargin 15 这样的命令将为右侧的 15 个字符的字符串提供足够的空间。
举个例子,假设我们的数据看起来像
8
9
15
3
6
然后我们可以绘制这个,在中间画一条线并用标签标记它
stats datafile nooutput
set arrow 1 from graph 0, first STATS_median to graph 1, first STATS_median nohead
set label 1 sprintf("%0.2f",STATS_median) at graph 1, first STATS_median offset char 1,0
set rmargin 5
plot datafile w points pt 7
这会产生以下内容
请注意,我们在字符坐标系中指定了标签的偏移量,这允许我们将其向右移动一个字符宽度。
在此示例中,可以通过使用 y2 轴并用字面意思指定 tic 标记来实现替代方法
set link y
set y2tics ("%0.2f" STATS_median)
plot datafile w points pt 7
这里的优点是边距是自动计算的。但是,当您在其他地方需要标签时,这是不可能的。
【讨论】: