matplotlib子图未按预期工作

时间:2016-05-31 22:22:10

标签: python-2.7 matplotlib

我有以下代码:

import matplotlib.pyplot as plt
horas = [1,2,3,4]
diccionario = {(1,1,2,1):[2,3,4,5],
               (1,2,2,2):[2,5,1,5],
               (1,3,2,3):[2,5,5,5],
               (1,4,2,4):[2,6,8,5],
               (1,5,2,5):[2,7,5,5],
               (1,6,2,6):[2,8,2,5],
               (1,7,2,7):[2,9,6,5],
               (1,8,2,8):[2,4,9,5]}
plt.figure()     
i = 1 
maximo = 0
keys = diccionario.keys()
for n in range(0,len(keys)-1,2):
    gn, = plt.plot(horas,diccionario[keys[n]],'ro-')
    gn1, = plt.plot(horas,diccionario[keys[n+1]],'g*-')
    plt.subplot(len(keys)//2, 1,i)
    plt.legend([gn,gn1], [keys[n],keys[n+1]])
    i+=1
plt.show()

我希望有4个子图,每个子图有两行。我有他们,但最后一个是空的。

有人可以解释为什么吗?我没有成功地尝试了许多不同的方法。

1 个答案:

答案 0 :(得分:1)

在绘制 gn gn1 之前,先放置子图()。这将解决您的问题。

for n in range(0, len(keys) - 1,2):
    plt.subplot(len(keys)//2, 1, i)
    gn, = plt.plot(horas, diccionario[keys[n]], 'ro-')
    gn1, = plt.plot(horas, diccionario[keys[n+1]], 'g*-')
    plt.legend([gn, gn1], [keys[n], keys[n+1]])
    i+=1

顺便说一句,我建议使用元组而不是 dict 。您可能会注意到结果的顺序与您想要的完全不同。