【问题标题】:Displaying markers on specific values in Gnuplot's line plot在 Gnuplot 的线图中显示特定值的标记
【发布时间】:2014-06-02 00:49:01
【问题描述】:

我的文件中包含 CDF 的数据,如下所示:

0.033 0.0010718113612
0.034 0.0016077170418
0.038 0.0021436227224
...  ...
...  ...
0.847 0.999464094319
0.862 1.0

第一列是 X 轴值,第二列是 Y 轴上的 CDF 值。我设置线条样式如下:

set style line 1 lc rgb 'blue' lt 1 lw 2 pt 7 ps 0.75   # --- blue

然后用以下内容绘制线:

plot file1 using 1:2 title 'Test Line CDF' with linespoints ls 1

这一切都很好,问题似乎是我的 CDF 文件很大(大约 250 行),Gnuplot 会为每个数据点绘制标记/点(在这种情况下是一个圆圈)。这会导致非常“密集”的线条,因为标记过度集中,以至于下面的线条几乎不可见,如下面的示例图片所示:

我如何有选择地绘制标记,而不是将它们放在所有数据点上,而是在每 50 个数据点之后绘制它们,而不必减少数据点的数量(我相信这就是 "every n" 在plot 命令会做)在我的数据文件中还是减小标记大小?

【问题讨论】:

  • 我不确定我是否理解您的问题:您是否只想对部分曲线使用every n 命令?否则,为什么不跳过 every n 并减小标记大小?
  • @Schorsch,基本上如果你使用every n,那么你实际上会在你的情节中失去点,导致一个看起来有点量化的CDF,即失去了漂亮的曲线。

标签: gnuplot cdf linestyle


【解决方案1】:

您可以绘制相同的函数两次,一次只用线绘制,然后每 n 个点绘制一次。这将在不减少分段数量的情况下绘制更少的点。我认为这是您想要实现的目标。对于这个例子,我已经完成了set table "data" ; plot sin(x) 来生成sin(x) 函数的数值采样。

你现在拥有的是:

plot "data" with linespoints pt 7

给了

现在您可以执行以下操作:

plot "data" with lines, "data" every 10 with points pt 7 lc 1

给你想要的:

您可以更改样式以满足您的需要。

【讨论】:

  • 确实我解决了这个问题,并在下面发布了我的解决方案。这正是我所做的。
【解决方案2】:

虽然@Miguel 打败了我,但我也在下面发布了我的解决方案:

这个想法是先画线,然后用“every n”说明符画点。我以以下方式更改了自己的 Gnuplot 脚本。一种黑客但有效:

set style line 1 lc rgb 'blue' lt 1 lw 2 pt 7 ps 0   # --- blue

plot file1 using 1:2 title '' with linespoints ls 1, "" using 1:2 every 20 title 'Test Line CDF' with points ls 1 ps 0.75

这保留了漂亮的曲线,不会过于粗略地量化它,同时还可以更好地保持点间距。

【讨论】:

    【解决方案3】:

    不需要使用两个绘图命令,只需使用pointinterval 选项:

    plot 'data' pointinterval 5 with linespoints
    

    绘制每条线段,但仅绘制每五个点符号。

    最大的优势是,您可以使用set style line 控制行为:

    set style line 1 lc rgb 'blue' lt 1 lw 2 pt 7 ps 0.75 pi 5
    plot 'data' w lp ls 1
    

    【讨论】:

    • 不错的解决方案。不过我想知道,我怎样才能绘制固定数量的点而不是每 5 点绘制一次?这可能吗?
    • @Nikko 不直接。可以使用stats获取记录数,然后计算步长:stats 'file.dat' using 2; ev = floor(STATS_records); plot 'file.dat' pi ev
    猜你喜欢
    • 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
    相关资源
    最近更新 更多