【问题标题】:unique legend in subplots (matplotlib)子图中的独特图例(matplotlib)
【发布时间】:2021-08-09 22:12:47
【问题描述】:

我正在尝试以 (2,3) 的格式创建 5 个子图,其中 (1,3) 是空白空间,我想在其中放置图例。每个子图中有六行,我想为此制作传奇。 我得到了子图,格式正确,但很难得到:

(1) 独特的传说;使用 fig.legend(),图例中充满了重复的线条,我想纯粹根据线条的名称来创建图例; (2) 将图例放置在子图(1,3)的空白处。

感谢您的帮助。

fig, axs = plt.subplots(2,3)

for i, j in zip(g_list,c_list):
        axs[0,0].plot(global_epsilon_T()["g_"+i+"_vlt"], global_epsilon_T()["g_"+i],   color=j, linewidth=1, label = "(c) "+i)
        axs[0,1].plot(global_epsilon_B()["g_"+i+"_vlt"], global_epsilon_B()["g_"+i],   color=j, linewidth=1, label = "(c) "+i)
        axs[0,2].plot(global_slope()["g_"+i+"_vlt"], global_slope()["g_"+i],   color=j, linewidth=1, label = "(c) "+i)
        axs[1,0].plot(global_trb()["g_"+i+"_vlt"], global_trb()["g_"+i],   color=j, linewidth=1, label = "(c) "+i)
        axs[1,1].plot(global_dis()["g_"+i+"_vlt"], global_dis()["g_"+i],   color=j, linewidth=1, label = "(c) "+i)

axs[1,2].set_visible(False)

【问题讨论】:

    标签: matplotlib subplot


    【解决方案1】:

    您可以通过 axs[i,j].legend() 将图例归因于每个子图,并为每个图提供一个图例,显示该子图的标签。如果你想让 subplot (1,3) 上的所有标签执行以下操作并将句柄和你希望它显示的标签传递给它:

    axs[1,3].legend([ax for ax in axs],[label for label in listOfLabels])
    

    或者,您可以将其归因于图形,因此在您的 for 循环之后添加 plt.legend(),它应该显示一个图例,其中包含图形对象上的所有标签而不是子图。

    另外,您是否没有收到错误消息:label = "(c) "+i 也许试试label = "(c)%i" %(i)

    【讨论】:

      猜你喜欢
      • 2016-11-27
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 2017-11-27
      相关资源
      最近更新 更多