Python 在不打印对象的情况下向matplotlib图例添加条目
是否可以在未打印相应对象的情况下向matplotlib中的图例添加条目 例如,我在一个图形上绘制了两组三条线。它们成对出现,所以我想用相应的颜色绘制它们,其中一个是虚线,另一个是实线Python 在不打印对象的情况下向matplotlib图例添加条目,python,matplotlib,legend,Python,Matplotlib,Legend,是否可以在未打印相应对象的情况下向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)
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),然后有两个额外的项目来消除虚线与实线之间的歧义(纯黑色“正片”,黑色虚线“负片”)
既然我没有绘制黑色实线/虚线,如何添加这两个条目?我在官方网站上看到了@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()
我在官方网站上看到了@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()
这个问题正是我们的主题