G = [500, 600]
V_cel = [[0.5061622703106294, 0.018464827637910804], [0.5109806104259279, 0.020619347874867924]]
I_cel = [[0. 0.35938438] [0. 0.4335135 ]]
P_cel = [[0.0, 0.006635970540228099], [0.0, 0.008938765665079252]]
plt.figure(1,figsize=(10,3))
plt.subplot(121)
for i in G:
for t in list(zip(V_cel, I_cel)):
plt.plot(*t, label='%s W/m$^{2}$' % i)
plt.legend()
plt.axis([0, 0.7, 0, 0.9])
plt.subplot(122)
for i in G:
for t in list(zip(V_cel, P_cel)):
plt.plot(*t, label='%s W/m$^{2}$' % i)
plt.legend()
plt.axis([0, 0.7, 0, 0.4])
plt.suptitle("I-V & P-V curves of PV cell for given STC data", fontsize=20)
plt.rc('font',family='Times New Roman')
plt.savefig('STC_I_V_curve')
plt.show()
**输出为:我绘制了两个子图,这很好。问题出在图例上。两者都应仅显示十个图例的列表。因为V_cel
和I_cel
都有[10个列表,每个列表有1000个值]。相反,两个图都显示了100个图例。请参阅所附的图。我希望它仅显示十个图例[100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
。某些错误在哪里。
答案 0 :(得分:2)
您可以遍历G元素列表和数据特征数组-这是一个循环。
假设G是您的传入能量列表,并带有一些自行设计的数据数组,则您的图可能是可创建的,如:
import numpy as np
import matplotlib.pyplot as plt
fig, axs = plt.subplots(1, 2, figsize=(10, 3))
for g, v, i, p in zip(G, V_cel, I_cel, P_cel):
axs[0].plot(v, i, label='%s W/m$^{2}$' % g)
axs[1].plot(v, p)
fig.legend()
axs[0].axis([0, 0.7, 0, 0.9])
axs[1].axis([0, 0.7, 0, 0.9])
plt.suptitle("I-V & P-V curves of PV cell for given STC data", fontsize=20)
plt.tight_layout(rect=[0, 0, .85, .9])