【问题标题】:Legend not visible in matplotlib, instead a small square box appears in the specified location图例在 matplotlib 中不可见,而是在指定位置出现一个小方框
【发布时间】:2020-09-15 16:39:11
【问题描述】:

我正在尝试为 matplotlib 中的所有子图制作一个图例。但是,图例根本没有出现,而是在指定位置看到了一个灰色的小方块。下图说明比较好(图右上角):2

代码sn-p:

sns.set(context='notebook')

fig,axs = plt.subplots(2,2, figsize=(7,4))
date_form = DateFormatter("%m-%d")


axs[0,0].plot(time,diag[:,0],color='r')
axs[0,0].plot(time,diag_ctrl[:,0],color='k')
#axs[0,0].set_title('Net heat flux')

axs[0,1].plot(time,diag[:,1],color='r')
axs[0,1].plot(time,diag_ctrl[:,1],color='k')
#axs[0,1].set_title('Sensible heat flux')

axs[1,0].plot(time,diag[:,2],color='r')
axs[1,0].plot(time,diag_ctrl[:,2],color='k')
#axs[1,0].set_title('Latent heat flux')
               
axs[1,1].plot(time,diag[:,3],color='r')
axs[1,1].plot(time,diag_ctrl[:,3],color='k')
#axs[1,1].set_title('LWR')

for ax in axs.flat:
ax.xaxis.set_major_formatter(date_form)
ax.xaxis.set_major_locator(ticker.AutoLocator())

lines, labels = fig.axes[-1].get_legend_handles_labels()
fig.legend(lines, ('sensitivity','control'), loc = 'upper right')
plt.show()

【问题讨论】:

  • 你可以尝试这样做:leg = fig.legend(lines, ('sensitive','control'), loc = 'upper right') leg.set_zorder(10)

标签: python matplotlib legend


【解决方案1】:

尝试在使用plot方法时直接为每个图设置标签。

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

n = 100
time = np.arange(n)

sns.set(context='notebook')

fig,ax = plt.subplots()

ax.plot(time,np.random.randn(n),label='sensitivity')
ax.plot(time,np.random.randn(n),label='control')

fig.legend(loc = 'upper right')
plt.show()

返回

您可能只需要为最后一个情节执行此操作。 您的代码可能类似于:

sns.set(context='notebook')

fig,axs = plt.subplots(2,2, figsize=(7,4))
date_form = DateFormatter("%m-%d")


axs[0,0].plot(time,diag[:,0],color='r')
axs[0,0].plot(time,diag_ctrl[:,0],color='k')
#axs[0,0].set_title('Net heat flux')

axs[0,1].plot(time,diag[:,1],color='r')
axs[0,1].plot(time,diag_ctrl[:,1],color='k')
#axs[0,1].set_title('Sensible heat flux')

axs[1,0].plot(time,diag[:,2],color='r')
axs[1,0].plot(time,diag_ctrl[:,2],color='k')
#axs[1,0].set_title('Latent heat flux')
               
axs[1,1].plot(time,diag[:,3],color='r',label='sensitivity')
axs[1,1].plot(time,diag_ctrl[:,3],color='k',label='control')
#axs[1,1].set_title('LWR')

for ax in axs.flat:
    ax.xaxis.set_major_formatter(date_form)
    ax.xaxis.set_major_locator(ticker.AutoLocator())

axs[1,1].legend(loc = 'upper right')
plt.show()

【讨论】:

    猜你喜欢
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多