使用matplotlib.pyplot绘制多个字典值



我一直试图将存储在列表中的值绘制为dict值,但我遇到了麻烦。以下是字典结构的一个示例,以及我的代码,用于迭代die键和值:

import matplotlib.pyplot as plt
mydict = {
"A":
[1.0, 0.75, 0.0, 0.25, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.5],
"B":
[1.0, 0.0, 0.0, 0.0, 0.5, 0.6666666666666666, 0.0],
"C":
[0.6666666666666666, 0.3333333333333333, 0.75, 0.25, 0.0, -1, 0.5, 0.75, 0.0, 0.0, 0.0],
"D":
[0.0, 0.0, 0.0, 0.2]}
for k, v in mydict.iteritems():   
plt.title('Some data for unit: ' + k)
plt.xlabel('Number of data points')
plt.ylabel('Some unit')
plt.figure(k)
xs = range(0, len(v))
ys = v
plt.plot(xs, ys, '-.')
plt.show

我是一个相对初学者,我可能错过了一些基本和必要的东西,但总是会发生以下情况:第一个情节是空的,有a单元的标题,最后一个没有标题或标签。所以我猜它模拟了A单元的一个空图,在第二个图中绘制A单元的数据,在第三个图中画B单元的数据等等,直到第五个图,考虑到我的dict只有四个键值对,我没想到会出现在那里。

我在这里错过了什么?我试了好几个小时,就是没能想出一个解决办法。

非常感谢!

您希望在赋予图形标题之前创建图形plt.figure()。然后,您需要决定是一次显示所有图形(循环外的plt.show()(,还是逐个显示(循环内(但是,请确保实际调用plt.show()-注意()

for k, v in mydict.iteritems():  
plt.figure(k) 
plt.title('Some data for unit: ' + k)
plt.xlabel('Number of data points')
plt.ylabel('Some unit')
xs = range(0, len(v))
ys = v
plt.plot(xs, ys, '-.')
plt.show()

您可以通过提供标题来创建一个新的绘图。然后调用plt.figure(k),创建另一个新的绘图。这是绘制当前循环数据的绘图。在下一个循环中,您为绘图赋予一个新标题。这就是为什么一切似乎都发生了变化。

plt.figure(k)移动到循环的顶部。如果你不在乎数字,你也可以直接调用plt.figure(),在大多数情况下,你不在乎。

此外,plt.show只是指函数,但您需要调用它:plt.show()

最新更新