matplotlib:循环数据以生成多个图

时间:2017-08-15 14:25:45

标签: python loops matplotlib

我正在尝试循环访问一些数据,这是我的代码:

fig = plt.figure(figsize=(8, 6), dpi=120)
ax = fig.add_subplot(111)
e_key_list = [0.14, 0.23, 0.41, 0.77, 1.26,  1.3, 1.7, 2.2, 3.0, 4.1, 5.8]
e_width_ls = [0.09, 0.18, 0.36, 0.49, 66.74, 0.4, 0.5, 0.8, 1.1, 1.7, 7.0]

for d in range(7):
    for i in range(len(tme[0])):
        bin_data = []
        if i == 4:
            continue
        #print i
        for j in range(len(e_eng[i+1])):
            if 4.2 <= x[j] <= 5 and int(day[0])+d == int(day[j]):
                bin_data.append(e_eng[i+1][j] - e_bc[i+1][j])

        bin_data = np.array(bin_data)
        ax.bar(e_key_list[i], np.mean(bin_data), color ='g', width = e_width_ls[i], edgecolor = 'k', align ='edge')
    plt.show()

我想要d的每次迭代(这意味着代表一天)来产生一个情节,但我只得到一个d = 0的情节。另一方面,如果不包括plt.show(),所有我要创建的7个图显示在同一个直方图上。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

据我了解,你想拥有7个数字,每个数字都有一个条形图。要创建图形,请使用import matplotlib.pyplot as plt import numpy as np e_key_list = [0.14, 0.23, 0.41, 0.77, 1.26, 1.3, 1.7, 2.2, 3.0, 4.1, 5.8] e_width_ls = [0.09, 0.18, 0.36, 0.49, 66.74, 0.4, 0.5, 0.8, 1.1, 1.7, 7.0] for d in range(7): fig = plt.figure(figsize=(8, 6), dpi=120) ax = fig.add_subplot(111) for i in range(5): bin_data = [] if i == 4: continue #print i for j in range(5): bin_data.append(j) bin_data = np.array(bin_data) ax.bar(e_key_list[i], np.mean(bin_data), color ='g', width = e_width_ls[i], edgecolor = 'k', align ='edge') plt.show() 。但是,您需要7个数字,而不是只创建一个数字。因此将数字创建放入循环中。

plt.show()

如果您将Promise置于循环之外,则会立即显示所有7个数字。