首页 > 解决方案 > 使用 matplotlib.pyplot 绘制多个字典值

问题描述

我一直在尝试将存储在列表中的值绘制为 dict 值,但我被卡住了。这是字典结构的示例以及我的代码以迭代键和值:

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 只有四个键值对。

我在这里想念什么?我已经尝试了几个小时,但无法提出解决方案。

非常感谢!

标签: pythonpython-2.7matplotlib

解决方案


您通过给出标题来创建一个新的情节。之后,您调用plt.figure(k),创建另一个新情节。这是当前循环的数据将被绘制的图。在下一个循环中,您给这个图一个新的标题。这就是为什么一切似乎都发生了变化。

移动plt.figure(k)到循环的顶部。plt.figure()如果您不关心数字的号码,您也可以打电话,在大多数情况下,您不关心。

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


推荐阅读