python – matplotlib自定义图例中类别的子标题

前端之家收集整理的这篇文章主要介绍了python – matplotlib自定义图例中类别的子标题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个看起来像这样的数字:

我想制作一个看起来像这样的传奇:

我怎样才能做到这一点?

更新:

请注意,此图例的框架带有edgecolor:有效的答案将包括此.图例也应嵌入轴中.

我想要的传奇可能无法使用ax.legend()实现.一个很好的答案将展示如何使用补丁和文本手动构建我想要的图例(完全如图所示),或任何有意义的matplotlib方法.

解决方法

D和A线的单独标题
from matplotlib.pyplot import *
ds = [1,2,3]
dc = [1.1,1.9,3.2]
asim = [1.5,2.2,3.1]
ac = [1.6,2.15,3.1]

categories = ['simulated','calculated']

p1,= plot(ds,'ko',label='D simulated')
p2,= plot(dc,'k:',label='D calculated')
p3,= plot(asim,'b+',label='A simulated')
p4,= plot(ac,'b-',label='A calculated')
p5,= plot([0],marker='None',linestyle='None',label='dummy-tophead')
p7,label='dummy-empty')

leg3 = legend([p5,p1,p2,p5,p3,p4],[r'$D_{etc}$'] + categories + [r'$A_{etc}$'] + categories,loc=2,ncol=2) # Two columns,vertical group labels

leg4 = legend([p5,p7,[r'$D_{etc}$','',r'$A_{etc}$',''] + categories + categories,loc=4,horizontal group labels

gca().add_artist(leg3)

#If there isn't a big empty spot on the plot,two legends:
#leg1 = legend([p1,p2],categories,title='D_etc',loc=0)
#leg2 = legend([p3,title='A_etc',loc=4)
#gca().add_artist(leg2) 

show()

猜你在找的Python相关文章