当我尝试使用 linespoints
绘制图表时,除非去到x
轴的值已经在文件中排序,否则每个点会连接到文件下一行上的点:
只有在对文件进行排序后,我才能得到期望的效果,即每个点都与一个x
值较小和一个x
值较大的点连接:
是否有一种方法可以在gnuplot内部完成这个功能,而无需在bash中对文件进行排序?
Gnuplot提供了一些平滑滤波器,首先按照它们的x值对数据进行排序。plot ... smooth unique
首先按照他们的x值对数据点进行排序,并计算相同x值的平均y值。因此,如果您确定x值是唯一的,则可以使用此选项。否则,您必须使用外部工具或脚本来使用plot '< sort file.dat'
进行排序。
plot '< sort -nk2 file.dat' u 2:3
会对第二列进行数字排序,这样标题行将保持不变,您可以选择哪一列作为 x 值。 - arekolek
sort
(对于Windows,你必须安装类似的工具,例如http://gnuwin32.sourceforge.net/packages/coreutils.htm)。有一些笨拙的尝试只使用gnuplot,例如https://stackoverflow.com/q/54144027/7295599。虽然,在gnuplot 5.4中有zsort
,但是在两列排序中它并没有维护顺序(仅在Windows下),请参见:https://stackoverflow.com/q/67801386/7295599。 - theozh