我试图在Spyder IDE中使用matplotlib.pyplot
包和Python 3绘制元组列表。以下是我的代码的相关片段:
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)我如何提供绘图范围,所以没有负值?
谢谢
首先,你的屏幕抓取的代码有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()的参数,但它似乎没有在任何地方使用,你也使用名称项作为你的for循环参数。您应该避免在这样的两个地方使用相同的名称,因为它可能会令人困惑。
要更改范围,您可以使用:
plt.xlim(xmin=some_min, xmax=some_max)
要么
plt.xlim(xmin=some_min)
如果你只想改变最小值。你可以为ylim做一个类似的命令。
如果您有数据集,您可能还需要考虑使用numpy。使用numpy数组通常比使用list和for循环更快