我正在尝试循环访问一些数据,这是我的代码:
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 个图都显示在同一个直方图上。任何帮助将不胜感激!
据我了解,您想要 7 个数字,每个数字都有一个条形图。要创建图形,请使用plt.figure
.但是,您不需要只创建一个图形,而是需要 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()
如果您将plt.show()
放在循环之外,如上所述,将立即显示所有 7 个数字。