在Gnuplot'中的特定值上显示标记;s线图
我在一个文件中有CDF的数据,如下所示:在Gnuplot'中的特定值上显示标记;s线图,gnuplot,cdf,linestyle,Gnuplot,Cdf,Linestyle,我在一个文件中有CDF的数据,如下所示: 0.033 0.0010718113612 0.034 0.0016077170418 0.038 0.0021436227224 ... ... ... ... 0.847 0.999464094319 0.862 1.0 plot file1 using 1:2 title 'Test Line CDF' with linespoints ls 1 plot "data" with lines, "data" every 10 with po
0.033 0.0010718113612
0.034 0.0016077170418
0.038 0.0021436227224
... ...
... ...
0.847 0.999464094319
0.862 1.0
plot file1 using 1:2 title 'Test Line CDF' with linespoints ls 1
plot "data" with lines, "data" every 10 with points pt 7 lc 1
第一列是X轴值,第二列是Y轴上的CDF值。我将线条样式设置如下:
set style line 1 lc rgb 'blue' lt 1 lw 2 pt 7 ps 0.75 # --- blue
然后用以下内容绘制线:
0.033 0.0010718113612
0.034 0.0016077170418
0.038 0.0021436227224
... ...
... ...
0.847 0.999464094319
0.862 1.0
plot file1 using 1:2 title 'Test Line CDF' with linespoints ls 1
plot "data" with lines, "data" every 10 with points pt 7 lc 1
这一切都很好,问题似乎是我的CDF文件非常大(大约250行),Gnuplot会为每个数据点绘制标记/点(本例中是一个圆圈)。这导致了一条非常“密集”的线,因为标记物过于集中,以至于下面的线几乎不可见,如我在下面的示例图像中所示:
我如何有选择地绘制标记,以便不必在所有数据点上绘制标记,而是在每50个数据点之后绘制标记,而不必减少数据点的数量(我相信这就是plot命令中的
“每n”
所能做的)在我的数据文件中或减小标记大小?您可以绘制同一函数两次,一次仅绘制直线,然后每n个点绘制一个点。这将在不减少线段数量的情况下绘制更少的点。我想这就是你想要实现的。对于这个例子,我做了设置表“data”;绘制sin(x)
以生成sin(x)函数的数值采样
您目前拥有的是:
plot "data" with linespoints pt 7
给
现在,您可以执行以下操作:
0.033 0.0010718113612
0.034 0.0016077170418
0.038 0.0021436227224
... ...
... ...
0.847 0.999464094319
0.862 1.0
plot file1 using 1:2 title 'Test Line CDF' with linespoints ls 1
plot "data" with lines, "data" every 10 with points pt 7 lc 1
这给了你想要的:
您可以更改样式以满足您的需要。虽然@Miguel比我做得更好,但我也在下面发布了我的解决方案: 其思想是先画一次线,然后用“everyn”说明符画点。我以以下方式更改了自己的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
这样可以保留漂亮的曲线,而不会对其进行过粗量化,同时也可以使点之间的间隔更好。无需使用两个绘图命令,只需使用
pointinterval
选项:
plot 'data' pointinterval 5 with linespoints
这将绘制每条线段,但仅绘制每五个点符号
最大的优点是,您可以使用设置样式行
控制行为:
set style line 1 lc rgb 'blue' lt 1 lw 2 pt 7 ps 0.75 pi 5
plot 'data' w lp ls 1
我不确定我是否理解您的问题:是否仅对曲线的部分使用
every n
命令?否则,为什么不跳过每n
和减少标记大小就行了?@Schorsch,基本上如果你使用每n
那么你实际上在绘图中丢失了点,导致CDF看起来有点量化,即丢失了漂亮的曲线。事实上,我已经解决了这个问题,并在下面发布了我的解决方案。这正是我所做的。很好的解决方案。但我想知道,我如何才能绘制固定数量的点,而不是每5点绘制一次?。这可能吗?@Nikko不直接说。您可以使用stats获取记录数,然后使用2计算步骤:stats'file.dat;ev=地板(统计记录);打印'file.dat'pi ev
。