python27 matplotlib:连接的第一个和最后一个元素

python27 matplotlib: first and last element connected

您好,我发现了同样的问题,但没有答案: enter link description here

我的问题是我尝试使用 matplotlib 绘制数据,它连接了第一个和最后一个数据点。我正在使用 python27 和 Windows 7. 我的问题太大了,无法显示完整,所以我只显示了部分源代码。绘图函数如下:

def plot(x, aw,temperature):
    plt.clf()
    temperatureplot = plt.subplot(211)
    awplot = plt.subplot(212)

    temperatureplot.grid()
    awplot.grid()  

    #set subplots
    awplot.set_ylabel('water activity aw')
    awplot.plot(x,aw)
    awplot.margins(y=0.05) #adds a gap between maximum value and edge of diagram
    temperatureplot.set_ylabel('Temperature in degree C')
    temperatureplot.plot(x,temperature)
    temperatureplot.margins(y=0.05)

    awplot.set_xlabel('Time in [hm]')
    plt.gcf().canvas.draw()

我正在使用它,因为我在 Tkinter Gui 中绘制它并且有时想刷新它。情节看起来像:

我的价值观是:

t = [161000, 161015...., 191115]
aw = [0.618,......, 0.532]
temperature = [23.7,....,24.4]

我在 t 数组中不从零开始是个问题吗?

如果有人有提示或知道问题请帮助我。

干杯最大

Pyplot 正在连接第一个 (x,y) 点和第二个 (x,y) 点,然后是第三个点,依此类推...所以看起来可能隐藏了一个(重复的?)低值在你的 x 即将结束时。

您可以尝试 x == sorted(x) 仔细检查您的列表是否严格按升序排列。如果不是,它将 return False

您可能希望在调用 plot() 函数之前找到 (x,y) 对,所以我暂时将其留给您。

我遇到了同样的问题。我找到的解决方案是在存储我的数据的 .txt 文件中。数据集在文件中存在两次,因此导致matplotlib连接起点和终点。

删除双重数据并正确绘制图形。幸运的是,这两个数据集相继出现。所以很容易删除第一部分。

由于在我的案例中这是一个庞大的数据收集,所以这并不明显,因此需要一些时间才能实现。

问题是在创建 txt 文件时引起的....

所以用 matplotlib 都是正确的。

干杯,里克

好问题! 在从循环缓冲区绘制时间戳数据时遇到类似的问题。其他答案解释了发生了什么。

绘图严格按顺序处理向量,从第一个坐标到第二个坐标画一条线,依此类推。但是循环缓冲区可以在任何时候从最低时间开始。

因此情节通常会在情节中间的某个地方开始 window 并且时间递增。然后它到达插入点并及时跳 返回 到 window 的开始——画一条丑陋的线——然后恢复到起点。

快速解决方案是替换此行:

plot(pTime, pPos)

用两条线按正确顺序绘制每一半:

plot(pTime[ptr:], pPos[ptr:])
plot(pTime[0:ptr], pPos[0:ptr])

我刚遇到同样的问题。

就我而言,我处理的是一年中的 365 天。索引从 0 开始到 365 结束,而天数从 1 开始到 366 结束,所以对应于第 366 行的日期是 1,这就是为什么有一条线连接情节的结尾和开头。 我还需要检查闰年,因为数据是从 10 年的时间段收集的。

如您所见,我遇到了类似的问题:

之前

我刚刚用这个对 x 进行了排序:

x = sorted(x)

如您所见,该行消失了:(但由于排序,数据被打乱了)。

排序后

您还必须确保相应的 y 值也应相应地排列为已排序的 x。最终输出在这里:

已修复