我在matplotlib中生成一些图,并希望为一些数据添加解释性文本。我希望在图例中有一个字符串,作为'0-10'项上方的单独图例项。有人知道是否有可能这样做吗?
这是我的传奇代码:ax.legend(['0-10','10-100','100-500','500+'],loc='best')
ax.legend(['0-10','10-100','100-500','500+'],loc='best')
jfgube3f1#
另一种解决方案,有点脏,但很快。
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()
snz8szmq2#
当然。ax.legend()有两个参数形式,它接受一个对象列表(句柄)和一个字符串列表(标签)。使用一个虚拟对象(又名“代理艺术家”)作为你的额外字符串。我选择了一个没有填充和0线宽的matplotlib.patches.Rectangle,但你可以使用任何支持的艺术家。例如,假设您有4个bar对象(由于您没有发布用于生成图形的代码,因此我无法准确地复制它)。
ax.legend()
matplotlib.patches.Rectangle
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()
de90aj5v3#
我找到了另一种方法来做到这一点只是尝试:
plt.legend(title='abc xyz')
我在工作中使用了这个!
3条答案
按热度按时间jfgube3f1#
另一种解决方案,有点脏,但很快。
snz8szmq2#
当然。
ax.legend()
有两个参数形式,它接受一个对象列表(句柄)和一个字符串列表(标签)。使用一个虚拟对象(又名“代理艺术家”)作为你的额外字符串。我选择了一个没有填充和0线宽的matplotlib.patches.Rectangle
,但你可以使用任何支持的艺术家。例如,假设您有4个bar对象(由于您没有发布用于生成图形的代码,因此我无法准确地复制它)。
de90aj5v3#
我找到了另一种方法来做到这一点只是尝试:
我在工作中使用了这个!