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

2024-09-29 22:07:17 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我发现了同样的问题,但是没有答案: 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的图形用户界面中绘制这个图,并且有时想刷新它。情节是这样的: enter image description here

我的价值观是:

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

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

如果有人有线索或者知道这个问题,请帮助我。

干杯麦克斯


Tags: 数据答案inplot绘制pltgridtemperature
3条回答

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

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

因此,绘图通常会在绘图窗口中间的某个位置开始,并有很好的递增时间。然后它到达插入点,并及时跳回到窗口的开头——画一条难看的线——然后继续跳到起点。

快速解决方案是替换这一行:

plot(pTime, pPos)

以正确的顺序绘制每一半的两条线:

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

Pyplot是连接第一个(x,y)点和第二个(x,y)点,以及第三个等等。。。所以看起来可能有一个(重复?)隐藏在x末尾的低值。

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

在调用plot()函数之前,您可能需要找到(x,y)对,所以我现在就把这个留给您。

我也有同样的问题。我找到的解决方案是存储数据的.txt文件。该数据集在文件中存在两次,从而导致matplotlib连接起止点。

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

因为这是一个巨大的数据收集在我的情况下,这是不明显的,因此需要一些时间来认识。

创建txt文件时出现问题。。。。

所以matplotlib是正确的。

干杯,瑞克

相关问题 更多 >

    热门问题