Python matplotlib:每个子批次中有多个图例

Python matplotlib:每个子批次中有多个图例,python,matplotlib,legend,subplot,Python,Matplotlib,Legend,Subplot,我知道如何将情节的图例拆分为两个单独的图例: x=np.linspace(0,1) y1=x y2=2*x 图,ax=plt.子批次() 图设置尺寸英寸((8,8)) 点数=[] pnts=最大散射(x,y1,c='b') 点。附加(pnts) pnts=最大散射(x,y2,标记=v',c='r') 点。附加(pnts) leg1=plt.图例([点[0]],[蓝色]\ loc=2,ncol=1,fancybox=False,shadow=False,framealpha=0.0,fontsiz

我知道如何将情节的图例拆分为两个单独的图例:

x=np.linspace(0,1)
y1=x
y2=2*x
图,ax=plt.子批次()
图设置尺寸英寸((8,8))
点数=[]
pnts=最大散射(x,y1,c='b')
点。附加(pnts)
pnts=最大散射(x,y2,标记=v',c='r')
点。附加(pnts)
leg1=plt.图例([点[0]],[蓝色]\
loc=2,ncol=1,fancybox=False,shadow=False,framealpha=0.0,fontsize=25)
leg2=plt.图例([点[1]],[红色]\
loc=4,ncol=1,fancybox=False,shadow=False,framealpha=0.0,fontsize=25)
ax.添加艺术家(leg1)
ax.添加艺术家(leg2)
这将产生您期望的漂亮身材:

我需要做的是将这个方法扩展到单个图形中的多个子图

x=np.linspace(0,1)
y1=x
y2=2*x
图,ax=plt.子批次(1,2,sharex=False,sharey=False)
图设置尺寸英寸((16,8))
#################
点数=[]
pnts=ax[0]。散射(x,y1,c='b')
点。附加(pnts)
pnts=ax[0]。散布(x,y2,marker='v',c='r')
点。附加(pnts)
leg1=plt.图例([点[0]],[蓝色]\
loc=2,ncol=1,fancybox=False,shadow=False,framealpha=0.0,fontsize=25)
leg2=plt.图例([点[1]],[红色]\
loc=4,ncol=1,fancybox=False,shadow=False,framealpha=0.0,fontsize=25)
ax[0]。添加艺术家(leg1)
ax[0]。添加艺术家(leg2)
#################
点数=[]
pnts=ax[1]。散射(x,y1,c='g')
点。附加(pnts)
pnts=ax[1]。散射(x,y2,标记为橙色,c='r')
点。附加(pnts)
leg1=plt.图例([点[0]],[绿色]\
loc=2,ncol=1,fancybox=False,shadow=False,framealpha=0.0,fontsize=25)
leg2=plt.图例([点[1]],[橙色]\
loc=4,ncol=1,fancybox=False,shadow=False,framealpha=0.0,fontsize=25)
ax[1]。添加艺术家(leg1)
ax[1]。添加艺术家(leg2)
不幸的是,我得到的是

ax[0]。添加艺术家(leg1) ValueError:无法重置轴。您可能试图在多个不受支持的轴上重复使用艺术家

看起来它不能与多个子地块一起使用。。。即使让我吃惊的是,在我第一次尝试调用
add\u artist
时就出现了错误


最后,请注意,我可能会想出一些蛮力解决方案,例如为每个传奇制作一个单独的斧头或类似的东西。我更喜欢一个自动化程度更高的解决方案,能够以相对简单的方式处理潜在的多个子地块和图例。

而不是
plt。图例
使用
ax[0]。图例
ax[1]。图例
。另外,对我来说,
marker='orange'
给出了
无法识别的标记样式“orange”
。是的,在上一个示例中,橙色应该是颜色。然而,
ax.legen
成功了。谢谢