【问题标题】:How do I draw a set of vertical lines in gnuplot?如何在 gnuplot 中绘制一组垂直线?
【发布时间】:2011-05-26 07:35:42
【问题描述】:

例如如果我有一个图表并且想要沿 X 轴每隔 10 个单位添加垂直线。

【问题讨论】:

标签: gnuplot


【解决方案1】:

这是我的 perl 脚本中的一个 sn-p 用于执行此操作:

print OUTPUT "set arrow from $x1,$y1 to $x1,$y2 nohead lc rgb \'red\'\n";

正如您可能从上面猜到的那样,它实际上被绘制为“无头”箭头。

【讨论】:

  • 谢谢!只是为了总 n00bs 的利益和迂腐,在 x=1 处绘制一条从 y=0 到 y=100 的垂直线的完整示例就是:从 1,0 到 1,100 设置箭头 nohead lc rgb “红色”
【解决方案2】:

您也可以这样做:

p '< echo "x y"' w impulse

x 和 y 是绘制竖线的点的坐标

【讨论】:

  • 这似乎是一种更简洁的方式。如果要画多条竖线,也可以使用'-'dummy file
  • 这给出了warning: Skipping data file with no valid points x range is invalid。不知道为什么。
【解决方案3】:

您可以将grid 功能用于第二个未使用的轴x2,这是绘制一组规则间隔线的最自然方式。

set grid x2tics
set x2tics 10 format "" scale 0

通常,网格绘制在与轴上的 tic 相同的位置。如果线条的位置与抽动位置不对应,gnuplot 会提供一组额外的抽动,称为x2ticsformat ""scale 0 隐藏了 x2tics,因此您只能看到网格线。

您可以像往常一样使用linewithlinecolor 设置线条样式。

【讨论】:

  • 附加说明:如果您使用 x2tics 来控制网格,您必须确保 x2axis 的范围与 xaxis 的值相同。如果您使用自动缩放,则无法保证。使用显式设置 x2range[x:y] 修复。
【解决方案4】:

来自 Gnuplot 文档。要在 x=3 处从图表底部到顶部绘制一条垂直线,请使用:

set arrow from 3, graph 0 to 3, graph 1 nohead

【讨论】:

    【解决方案5】:

    要详细说明以前关于“每个 x 个单位”部分的答案,我想出以下答案:

    # Draw 5 vertical lines
    n = 5
    
    # ... evenly spaced between x0 and x1
    x0 = 1.0
    x1 = 2.0
    dx = (x1-x0)/(n-1.0)
    
    # ... each line going from y0 to y1
    y0 = 0
    y1 = 10
    
    do for [i = 0:n-1] {
        x = x0 + i*dx
        set arrow from x,y0 to x,y1 nohead linecolor "blue" # add other styling options if needed
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多