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
。最终输出在这里:
已修复
您好,我发现了同样的问题,但没有答案: 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
。最终输出在这里:
已修复