此问题已在此处有答案:
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数组中不从零开始有问题吗?
4条答案
按热度按时间zaqlnxep1#
Pyplot将第一个(x,y)点与第二个(x,y)点连接起来,与第三个点连接起来,如此类推.所以看起来可能有一个(重复?)隐藏在
x
末尾的低值。您可以尝试
x == sorted(x)
来仔细检查列表是否严格升序。如果不是,它将返回False
。在调用
plot()
函数之前,您可能希望找到(x,y)对。rdrgkggo2#
我有类似的问题,你可以看到:
之前
我只是用这个来排序
x
:正如你所看到的,这条线消失了:(但由于排序,数据被打乱了)。
排序后
您还必须确保相应的
y
值也应该相应地排列为已排序的x
。最终输出如下:固定
nwlls2ji3#
绘图是严格按照顺序处理向量的,从第一个坐标到第二个坐标画一条线,等等。但是循环缓冲区可以从任何点的最低时间开始。
因此,绘图通常会从绘图窗口中间的某个地方开始,并以很好的增量时间开始。然后它到达插入点,并及时跳回到窗口的开始-绘制一条丑陋的线-然后恢复到起点。
快速解决方案是替换这行:
其中两条线按正确的顺序绘制每一半:
kmb7vmvb4#
我也遇到了同样的问题。我找到的解决方案是在存储我的数据的.txt文件中。数据集在文件中存在两次,因此导致了matplotlib连接的开始和结束。
删除了重复数据,图形绘制正确,好在两个数据集是一前一后出现的,所以删除第一部分很容易。
由于这是一个巨大的数据收集在我的情况下,这是不明显的,因此需要一些时间来实现。
问题是在创建txt文件时引起的。