在Gnuplot的线图中显示特定值的标记

时间:2014-04-17 16:15:45

标签: gnuplot cdf linestyle

我在文件中有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会为每个数据点绘制标记/点(在这种情况下为圆)。这导致了非常“密集”的线,因为标记过度集中,使得下面的线几乎不可见,如下面的示例图所示:

enter image description here

如何选择性地绘制标记,使其不是将它们放在所有数据点上,而是在每50个数据点之后绘制它们,而不必减少数据点的数量(我认为是"every n"在plot命令中会做什么)在我的数据文件中或减少标记大小?

3 个答案:

答案 0 :(得分:4)

无需使用两个绘图命令,只需使用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

答案 1 :(得分:1)

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

目前你所拥有的是:

plot "data" with linespoints pt 7

给出了

enter image description here

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

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

给出你想要的东西:

enter image description here

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

答案 2 :(得分:1)

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

这个想法是画一条线,然后用"每个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

enter image description here

这保留了漂亮的曲线,没有过于粗略地量化它,同时也保持了更好的间隔点。