matplotlib 连接的第一个和最后一个元素[重复]

emeijp43  于 2023-10-24  发布在  其他
关注(0)|答案(4)|浏览(95)

此问题已在此处有答案

Given parallel lists, how can I sort one while permuting (rearranging) the other in the same way?(16个回答)
11天前关闭
我的问题是,我试图用matplotlib绘制数据,它连接了第一个和最后一个数据点。我使用python27和Windows 7。我的问题是太大了,无法显示完整,所以我只显示了源代码的一部分。plot函数如下:

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数组中不从零开始有问题吗?

zaqlnxep

zaqlnxep1#

Pyplot将第一个(x,y)点与第二个(x,y)点连接起来,与第三个点连接起来,如此类推.所以看起来可能有一个(重复?)隐藏在x末尾的低值。
您可以尝试x == sorted(x)来仔细检查列表是否严格升序。如果不是,它将返回False
在调用plot()函数之前,您可能希望找到(x,y)对。

rdrgkggo

rdrgkggo2#

我有类似的问题,你可以看到:


之前
我只是用这个来排序x

x = sorted(x)

正如你所看到的,这条线消失了:(但由于排序,数据被打乱了)。
排序后

您还必须确保相应的y值也应该相应地排列为已排序的x。最终输出如下:
固定

nwlls2ji

nwlls2ji3#

绘图是严格按照顺序处理向量的,从第一个坐标到第二个坐标画一条线,等等。但是循环缓冲区可以从任何点的最低时间开始。
因此,绘图通常会从绘图窗口中间的某个地方开始,并以很好的增量时间开始。然后它到达插入点,并及时跳回到窗口的开始-绘制一条丑陋的线-然后恢复到起点。
快速解决方案是替换这行:

plot(pTime, pPos)

其中两条线按正确的顺序绘制每一半:

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

kmb7vmvb4#

我也遇到了同样的问题。我找到的解决方案是在存储我的数据的.txt文件中。数据集在文件中存在两次,因此导致了matplotlib连接的开始和结束。
删除了重复数据,图形绘制正确,好在两个数据集是一前一后出现的,所以删除第一部分很容易。
由于这是一个巨大的数据收集在我的情况下,这是不明显的,因此需要一些时间来实现。
问题是在创建txt文件时引起的。

相关问题