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

时间:2018-12-07 13:23:08

标签: python python-2.7 matplotlib

我一直试图将存储在列表中的值绘制为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的数据,依此类推,直到第五个图,我都没想到会出现,因为我的字典只有四个键值对。

我在这里想念什么?香港专业教育学院尝试了几个小时,只是无法提出解决方案。

非常感谢!

2 个答案:

答案 0 :(得分:1)

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

plt.figure(k)移动到循环的顶部。如果您不关心图形的编号,也可以直接致电plt.figure(),而在大多数情况下,您不需要这样做。

plt.show只是引用该函数,但您需要调用它:plt.show()

答案 1 :(得分:1)

您要创建图形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()