【问题标题】:Add entry to matplotlib legend without plotting an object在不绘制对象的情况下向 matplotlib 图例添加条目
【发布时间】:2020-10-23 14:48:38
【问题描述】:

是否可以在不绘制相应对象的情况下在 matplotlib 中向图例添加条目?

例如,我在一张图上绘制了两组三条线。它们成对出现,所以我想用相应的颜色绘制它们,其中一个是虚线,另一个是实线。

import matplotlib.pyplot as plt
import numpy as np    
for i in range(1,4):
    line = plt.plot(i*np.arange(1,10), label=i)[0]
    plt.plot(-i*np.arange(1,10), ls='--', color=line.get_color(), label=-i)
plt.legend()

但是,我想要三个(纯蓝色 1、纯橙色 2、纯绿色 3、虚线蓝色 1、虚线橙色 2、虚线绿色 3)而不是图例中的所有六个项目1,纯橙色 2,纯绿色 3),然后是两个额外的条目以区分实心虚线(纯黑色“阳性”,黑色虚线“阴性”)。

如何添加这两个条目,因为我没有绘制黑色实线/虚线?

【问题讨论】:

标签: python matplotlib legend


【解决方案1】:

我从@JohanC 的评论中看到了官方网站上的自定义参考。是否符合您的问题意图?

import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
import numpy as np

fig, ax = plt.subplots()

legend_elements = [Line2D([0], [0], color='steelblue', ls='--',lw=2, label='blue'),
                   Line2D([0], [0], color='orange', ls='--',lw=2, label='orange'),
                   Line2D([0], [0], color='yellowgreen', ls='--',lw=2, label='green'),
                   Line2D([0], [0], color='k', ls='-',lw=2, label='positives'),
                   Line2D([0], [0], color='k', ls='--', lw=2, label='negatives')]

ax.legend(handles=legend_elements, loc='upper left')

for i in range(1,4):
    line = plt.plot(i*np.arange(1,10))[0]
    ax.plot(-i*np.arange(1,10), ls='--', color=line.get_color())
    
plt.show()

【讨论】:

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