6

下面的 plot 命令生成一个条形图,在每个条形图上方,值被绘制为标签,使用 gprintf 格式化:

plot "data.txt" using 6:1 index 0 notitle with boxes linestyle 1,\
     "data.txt" using 6:(0.7):(gprintf("%5.2f", $1)) index 0 notitle \
                                       with labels font "Courier,34" rotate left

我希望值标签右对齐,这样我就可以使用更好看的 Helvetica 字体而不是 Courier 来对齐小数点。

那么,如何在上述命令中包含理由?

我在 Gnuplot 文档或网络上没有找到任何关于这个特定问题的信息。其他标签可以很容易地证明是合理的,但是在使用标签绘图时也可以吗?

4

3 回答 3

5

我无法测试您的特定示例,但我的示例如下:

...
plot "test.dat" using ..., \
"" using ($1-100000):2:3 with labels rotate left notitle
...

...其中“ rotate left”部分取自OP。

好吧,我没有太多运气在网上找到有关标签“对齐”或“理由”的信息。所以我尝试查看在线 gnuplot 帮助。基本上,相关的东西都在下面help set label——我不确定我到底是怎么做的,但下面是我的命令日志;

$ gnuplot
...
    GNUPLOT
    版本 4.4 补丁级别 2
...

终端类型设置为“wxt”
gnuplot> 帮助标签
抱歉,“带标签”没有帮助
gnuplot> 帮助
 函数和数据可以以多种样式中的一种显示。
 `with` 关键字提供了选择的方法。

 句法:
       与 { {linestyle | }
...
其中之一在哪里

      线 点 步骤 errorbars xerrorbar xyerrorlines
      点脉冲 fsteps errorlines xerrorlines yerrorbars
      线点标签...
...
gnuplot> 帮助标签
 `labels` 样式从数据文件中读取坐标和文本并放置
 对应 2D 或 3D 位置的文本字符串。3 或 4 个输入列
 需要基本数据。……

      3列:xy字符串#2D版本
...
 另见`datastrings`,`set style data`。

gnuplot> 帮助设置标签
 可以使用“设置标签”命令在绘图上放置任意标签。

 句法:
       设置标签 {} {""} {at }
                 {左 | 中心 | 对}
                 {norotate | 旋转 {by }}
                 ...
 默认情况下,文本与点 x,y,z 左对齐。  调整
 标签相对于点 x,y,z 的定位方式,添加
 justification 参数,可以是 `left`、`right` 或 `center`,
 表示该点位于文本的左侧、右侧或中心。
 标绘边界之外的标签是允许的,但可能会干扰
 轴标签或其他文本。

 如果给出 `rotate`,标签是垂直书写的(如果终端可以做到
 所以,当然)。  如果给出 `rotate by `,符合条件的终端将
 尝试以指定的角度书写文字;不合格的终端将
 将此视为垂直文本。

相关部分加粗;他们解释了我的一个误解 -rotate left在 OP 示例中看到 ,我认为left是 的属性rotate,但它不是 -left是一个单独的对齐参数,rotate而是一个单独的旋转关键字(即rotate left并不意味着“逆时针旋转 90 度“正如我最初所想的那样)。

如果是这样,则可以反转这两个关键字:

...
plot "test.dat" using ..., \
"" using ($1-100000):2:3 with labels left rotate notitle
...

...并获得完全相同的输出图。如果最后我们用 替换leftright如:

...
plot "test.dat" using ..., \
"" using ($1-100000):2:3 with labels right rotate notitle
...

...我们可以看到标签仍然“向左”旋转(逆时针 90 度) - 但是,它现在与该位置右对齐。

好吧,希望这会有所帮助,
干杯!

于 2012-10-27T16:31:26.747 回答
1

"%5.2f"使用格式将打印字段的宽度指定为 5 个空格。小数部分占用 2 个空格,小数点占用 1 个空格,整数部分只剩下 2 个空格。因此,如果您绘制的数字不是0.7您指定的数字,则结果字符串会更宽。此外,Helvetica 是一种非等宽字体,因此数字的字符宽度不一样。因此,右对齐输出不会解决问题 - “.11”和“.88”不会小数点对齐。

于 2010-08-16T07:48:07.253 回答
1

这可能是新的,并且在最初提出这个问题时并不存在。但至少从 Gnuplot 5.2 开始,我发现我可以使用with labels left.

于 2020-03-10T00:33:40.483 回答