在子图 Matplotlib 中按列表添加图例

Posted

技术标签:

【中文标题】在子图 Matplotlib 中按列表添加图例【英文标题】:Adding legend by list within subplot Matplotlib 【发布时间】:2021-12-02 22:58:42 【问题描述】:

我想在一个图中绘制 2 个不同的图表。一张图只是一条线,因此标记图例没有问题。在 df_2_plot 中是提供的代码列表,因此图例中有更多行和更多代码。如果我这样标记它们,我只会在图例中多次收到列表,而不是每行的正确代码。

我尝试使用 for 循环,但找不到解决方案。

def func_plot_DataFrame(df_2_plot, legend_lst):
    
    
    y1 = df_2_plot
    y2 = df_infektionsgeschehen

    fig, ax1 = plt.subplots()

    ax2 = ax1.twinx()
    
    ax1.plot(y1, label = legend_lst)
    ax2.plot(y2, 'grey', linewidth=2, alpha=0.3, label = 'Neuinfektionen')


    plt.show()

【问题讨论】:

您只需要ax = df_infektionsgeschehen.plot(figsize=(8, 6)),然后是df_2_plot.plot(color='gray', alpha=0.3, ax=ax, secondary_y=True)。仅当数据框中的列超过 3 列时,才在第一个图中使用 y=legend_list 【参考方案1】:

您需要使用ax1.legend 而不是直接在ax1.plot 中使用label 参数

ax1.legend(labels=legend_lst)

看看官方文档here

【讨论】:

以上是关于在子图 Matplotlib 中按列表添加图例的主要内容,如果未能解决你的问题,请参考以下文章

在子图位置上绘制图例

如何将图例添加到 sns 子图?

Matplotlib - 全局图例和标题旁边的子图

如何使用 matplotlib 为许多子图制作一个图例?

在带有子图的 geopandas 图中添加图例会改变图的大小

见图。python matplotlib 子图图例不显示完全。怎么解决?