gpt4 book ai didi

python - 如何获取所有子图上的标签和轴标题(python)

转载 作者:行者123 更新时间:2023-12-01 08:53:33 27 4
gpt4 key购买 nike

我在这里做错了什么?尝试阅读同一问题的所有先前答案,但无法弄清楚问题是什么,为什么图例等只出现在最后一个子图上?可能我在这里缺少一件非常简单的事情..

#Create subplot
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(12,8));
axes
#parse into own variables
ax11 = axes[0][0]
ax12 = axes[0][1]
ax21 = axes[1][0]
ax22 = axes[1][1]

# Set plot line width
line_width = 1.5

# Plot data
ax11.plot(winter_temps, label='Winter')
plt.legend()
plt.title('Anomaly in temperature during winters 1953-2016')
plt.xlabel('Months')
plt.ylabel('Temperature anomaly (Celsius)')

ax12.plot(spring_temps, label='Spring')
plt.legend()
plt.title('Anomaly in temperature during springs 1953-2016')
plt.xlabel('Months')
plt.ylabel('Temperature anomaly (Celsius)')

ax21.plot(summer_temps, label='Summer')
plt.legend()
plt.title('Anomaly in temperature during summers 1953-2016')
plt.xlabel('Months')
plt.ylabel('Temperature anomaly (Celsius)')

ax22.plot(fall_temps, label='Fall')
plt.legend()
plt.title('Anomaly in temperature during falls 1953-2016')
plt.xlabel('Months')
plt.ylabel('Temperature anomaly (Celsius)')

# Set y-axis limits
ax11.set_ylim(min_temp, max_temp)
ax12.set_ylim(min_temp, max_temp)
ax21.set_ylim(min_temp, max_temp)
ax22.set_ylim(min_temp, max_temp)

# Turn plot grids on
ax11.grid()
ax12.grid()
ax21.grid()
ax22.grid()

输出: Output

这也给了我错误:

No handles with labels found to put in legend.

所以问题是我想要每个子图的图例、轴标题和图标题。

最佳答案

如果您使用每个子图句柄,您将在每个子图中生成所需的图例结果 -要么在绘图后将调用更改为 plt.legend()

ax11.legend()
ax12.legend()

等等,

或者更简单/更一般地,只需迭代最后的所有句柄:

for ax in axes.flat:
ax.legend(loc='best')

编辑:一个更全面的解决方案,用于显示分两部分的子图构造——不同的部分与一致的部分。

# Plot data
ax11.plot(winter_temps, label='Winter')
ax11.set_title('Anomaly in temperature during winters 1953-2016')

ax12.plot(spring_temps, label='Spring')
ax12.set_title('Anomaly in temperature during springs 1953-2016')

ax21.plot(summer_temps, label='Summer')
ax21.set_title('Anomaly in temperature during summers 1953-2016')

ax22.plot(fall_temps, label='Fall')
ax22.set_title('Anomaly in temperature during falls 1953-2016')

# set up labels, limits, gridlines, legends
for ax in axes.flat:
ax.set_xlabel('Months')
ax.set_ylabel('Temperature anomaly (Celsius)')
ax.set_ylim(min_temp, max_temp)
ax.grid('on')
ax.legend(loc='best')

我还建议看一下 fig.suptitle(),考虑为每个子图使用一个简短的标题(“Winter”),或者根本不使用,因为图例已经包含了这个。最后,查看 subplots(...)sharex/sharey 参数;这使您可以避免在所有四个子图上独立设置尺寸,并且如果您在交互模式下滚动,它们会一起移动。

关于python - 如何获取所有子图上的标签和轴标题(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52946088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com