我在文件中有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命令中会做什么)在我的数据文件中或减少标记大小?
答案 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
给出了
现在您可以执行以下操作:
plot "data" with lines, "data" every 10 with points pt 7 lc 1
给出你想要的东西:
您可以更改样式以满足您的需求。
答案 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
这保留了漂亮的曲线,没有过于粗略地量化它,同时也保持了更好的间隔点。