我正在尝试使用Spyder IDE中的matplotlib.pyplot包&Python3绘制元组列表。下面是我的代码的相关片段:
import matplotlib.pyplot as plt
def plot_test(item):
xdata = []
ydata = []
for item in list_of_epoch_total_time_tuples:
xdata = item[0]
ydata = item[3]
plt.plot(xdata,ydata)
plt.ylabel('epoch_counter')
plt.xlabel('square_error')
plt.show()下面是我的输出:

我看不到线条图。图形是空的吗?
1)我怎样才能正确地画出这个?
2)如何提供绘图范围,这样才不会有负值?
谢谢
发布于 2017-12-18 10:42:48
首先,屏幕截图中的代码是plt.plot(xdata,item[3:]),而您添加到问题中的代码是plt.plot(xdata,ydata),我认为这就是您想要的。问题是您在每次迭代中都会覆盖xdata和ydata,因此它只是单个项值。请改用:
for item in list_of_epoch_total_time_tuples:
xdata.append(item[0])
ydata.append(item[1])这会将值添加到列表的末尾,而不是覆盖变量的数据。此外,您还将item用作plot_test()的参数,但它似乎不会在任何地方使用,而且您还将name项用作for循环参数。您应该避免在这样的两个地方使用相同的名称,因为它可能会令人混淆。
用于更改您可以使用的范围:
plt.xlim(xmin=some_min, xmax=some_max)或
plt.xlim(xmin=some_min)如果您只想更改最小值。您可以对ylim执行类似的命令。
如果您有一个数据集,那么您可能还需要考虑使用numpy。使用numpy数组通常比使用列表和for循环更快
https://stackoverflow.com/questions/47861390
复制相似问题