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

时间:2015-01-19 01:31:54

标签: python matplotlib plot

您好我发现了同样的问题,但没有答案: 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中绘制这个并且想要有时刷新它。情节如下: enter image description here

我的价值观是:

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

我是不是在t数组中以零开头的问题?

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

Cheers Max

5 个答案:

答案 0 :(得分:2)

Pyplot连接第一个(x,y)点和第二个(x,y)点,第三个点等等......所以看起来可能有一个(重复的?)低值隐藏在你的x结束了。

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

你可能想在调用plot()函数之前找到(x,y)对,所以我现在就把它留给你。

答案 1 :(得分:1)

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

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

因此,绘图通常会在绘图窗口中间的某处开始,具有很好的递增时间。然后它到达插入点并及时跳回返回到窗口的开始 - 绘制一条丑陋的线 - 然后重新开始直到起点。

快速解决方案正在取代这一行:

plot(pTime, pPos)

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

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

答案 2 :(得分:0)

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

删除双数据并正确绘制图表。幸运的是,这两个数据集一个接一个地出现。因此删除第一部分很容易。

因为在我的案例中这是一个巨大的数据收集,所以这并不明显,因此花了一些时间来实现。

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

所以使用matplotlib都是正确的。

干杯,里克

答案 3 :(得分:0)

我遇到了同样的问题。

在我的情况下,我正在处理一年中的365天。索引从0开始并在365结束,而日期编号从1开始并在366结束,因此对应于第366行的日期为1,这就是为什么有一条线连接图的结尾到它的开头。 我还需要检查闰年,因为数据是从10年的时间收集的。

答案 4 :(得分:0)

您遇到的问题类似:

之前 enter image description here

我刚刚使用以下命令对x进行了排序:

x = sorted(x)

该行消失了,如您所见:(但是数据由于排序而受到干扰)。

排序后 enter image description here

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

已修复 enter image description here