我在matplotlib中生成一些图,并希望为某些数据添加说明文字。我希望在我的图例中有一个字符串作为'0-10'项目上方的单独图例项目。有谁知道是否有可能这样做?
这是我的传奇代码:
ax.legend(['0-10','10-100','100-500','500+'],loc='best')
答案 0 :(得分:33)
不确定。 ax.legend()
有一个两个参数形式,它接受一个对象列表(句柄)和一个字符串列表(标签)。使用虚拟对象(又名"proxy artist")来获取额外的字符串。我选择了matplotlib.patches.Rectangle
下面没有填充和0 linewdith,但你可以使用任何支持的艺术家。
例如,假设你有4个bar对象(因为你没有发布用于生成图形的代码,我无法完全重现它。)
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
fig = plt.figure()
ax = fig.add_subplot(111)
bar_0_10 = ax.bar(np.arange(0,10), np.arange(1,11), color="k")
bar_10_100 = ax.bar(np.arange(0,10), np.arange(30,40), bottom=np.arange(1,11), color="g")
# create blank rectangle
extra = Rectangle((0, 0), 1, 1, fc="w", fill=False, edgecolor='none', linewidth=0)
ax.legend([extra, bar_0_10, bar_10_100], ("My explanatory text", "0-10", "10-100"))
plt.show()
答案 1 :(得分:32)
替代解决方案,有点脏但很快。
import pylab as plt
X = range(50)
Y = range(50)
plt.plot(X, Y, label="Very straight line")
# Create empty plot with blank marker containing the extra label
plt.plot([], [], ' ', label="Extra label on the legend")
plt.legend()
plt.show()
答案 2 :(得分:1)
Clement H.的上述解决方案显然是最好的。我想知道是否有可能使“额外标签”向左对齐。我想为我的传说做出解释,例如:
Some data:
O datapoints
O datapoints
通过这种解决方案,它看起来像:
Some data:
O datapoints
O datapoints