Gnuplot将每个点连接在一起

Gnuplot将每个点连接在一起,gnuplot,Gnuplot,我正在gnuplot中绘制数据,如下所示: set terminal pdf set output "Planck.pdf" plot "CalculatedValues.dat" u 1:2 t "Dawn" pt 1 ps .1 with lines 但我的作品最终看起来像一个纱线雕塑 我希望输出看起来像一个线图,而不是散点图 我做错了什么 以下是一些数据: 13.4904 3.13714e+07 3.91106e+07 11.3872 4.64475e+07 5.96

我正在gnuplot中绘制数据,如下所示:

set terminal pdf
set output "Planck.pdf"
plot "CalculatedValues.dat" u 1:2 t "Dawn" pt 1 ps .1 with lines
但我的作品最终看起来像一个纱线雕塑

我希望输出看起来像一个线图,而不是散点图

我做错了什么

以下是一些数据:

13.4904 3.13714e+07     3.91106e+07
11.3872 4.64475e+07     5.96647e+07
18.0928 1.40999e+07     1.69117e+07
13.3284 3.23223e+07     4.03737e+07
1.3264  3309.46 24012.2
0.323113        5.16869e-25     1.764e-21
10.6252 5.35423e+07     6.97629e+07

它是制表符分隔和新行分隔的

问题在于点的顺序。Gnuplot将用线连接文件中的连续点。如果点的顺序基于x轴值(本例中的第一列),则您将获得所需的内容。如果不是,你会得到你所看到的奇怪的结果

未分类数据
绘图数据文件u 1:2 w linespoints pt 7
生成以下

此处对点进行编号,以显示它们的打印顺序。我们可以看到数据文件中连续出现的点是连接的

排序数据
绘图数据文件u 1:2 w linespoints pt 7
生成以下

这里我们看到相同的点被绘制,但顺序不同。同样,连续的点是相连的,但它们是按递增的顺序进行的,因为数据是按这样的顺序排序的


解决方案是首先对数据进行排序。让生成数据的程序在生产过程中对其进行排序,或在打印前使用外部程序对其进行排序。 如果第一列中的值是唯一的,则其中一个平滑选项可用于原始未排序数据。比如说,

plot datafile u 1:2 smooth unique w linespoints pt 7
将产生与使用排序数据打印相同的结果。-这是因为“平滑唯一”选项首先按x列对数据进行排序。y值将替换为所有y值与相应x值的平均值。如果x值是唯一的,这意味着原始数据将按排序顺序保留


**†**显示的绘图命令仅绘制线条。为了得到数字标签,我们使用
plot datafile u 1:2 w linespoints pt 7, \
           "" u 1:2:(sprintf("%d",$0+1)) w labels offset 0,graph 0.05
它在向上移动5%图形范围(使用图形坐标系)的每个点坐标处绘制标签。由于0伪列(行号)是基于0的,因此我们添加一个伪列以生成标签,我们将给出基于1的标签

——如果我们想在这里标记点,我们必须使用set table捕捉平滑数据,然后绘制数据。做

set table "tempfile"
plot datafile u 1:2 smooth unique
unset table
plot "tempfile" u 1:2 w linespoints pt 7, \
             "" u 1:2:(sprintf("%d",$0+1)) w labels offset 0,graph 0.05

将精确生成上面的排序图。数据被捕获到一个临时文件中,第一个plot命令只生成点。下面的plot命令将打印现在已排序的数据以及标签。这允许gnuplot自己进行所有排序,但同样,这仅在第一列中的值是唯一的情况下才起作用。

您的数据文件是什么样子的?Gnuplot将连续的点与线样式连接在一起。如果您的数据按第一列的顺序排序,您将得到所需的结果。我怀疑你的数据是以某种随机顺序排列的,这将导致你所看到的。添加到原始评论中,这完全是它。我只记得我的x值来自随机数生成器。非常感谢,真不敢相信我错过了
plot datafile u 1:2 w linespoints pt 7, \
           "" u 1:2:(sprintf("%d",$0+1)) w labels offset 0,graph 0.05
set table "tempfile"
plot datafile u 1:2 smooth unique
unset table
plot "tempfile" u 1:2 w linespoints pt 7, \
             "" u 1:2:(sprintf("%d",$0+1)) w labels offset 0,graph 0.05