我在一个图中有三个图表彼此合并,其中包含许多值得注意的信息。我最近能够对图例标签进行颜色编码,而不是用相关的线标记它们。
但是当我尝试在其中一个地块上的另一个位置添加另一组标签时,原始消失
import matplotlib.pyplot as plt
from matplotlib import gridspec
import numpy as np
import scipy as sp
import matplotlib.ticker as tic
from matplotlib.patches import Rectangle
fig111 = plt.figure(figsize=(12,6))
gs = gridspec.GridSpec(1,3, width_ratios=[1,1,0.3])
Bind = fig111.add_subplot(gs[0])
BindD = fig111.add_subplot(gs[1], sharey=Bind)
Hist = fig111.add_subplot(gs[2], sharey=BindD)
...
...
empty = Rectangle((0, 0), 0, 0, alpha=0.0)
l = Bind.legend([empty], ['Illustris-1'],
loc='upper left', frameon=False, handlelength=0, handletextpad=0)
lD = BindD.legend([empty], ['Illustris-1-Dark'],
loc='upper left', frameon=False, handlelength=0,
handletextpad=0)
dw = Bind.legend([empty,empty,empty,empty], ['Carina', 'Sculptor', 'Ursa Minor', 'Leo I' ],
loc='center right', frameon=False, handlelength=0, handletextpad=0)
l.get_texts()[0].set_color('slateblue')
lD.get_texts()[0].set_color('crimson')
dw.get_texts()[0].set_color('mediumspringgreen')
dw.get_texts()[1].set_color('orchid')
dw.get_texts()[2].set_color('c')
dw.get_texts()[3].set_color('orange')
gs.update(wspace=0)
plt.setp([BindD.get_yticklabels() ,Hist.get_yticklabels()], visible=False)
plt.show()
在同一个子图上同时使用两个标签的有效方法是什么?
答案 0 :(得分:1)
从matplotlib图例指南的Multiple legends on the same axes章节中可以看出,您需要在创建第二个图例之前将第一个图例作为艺术家添加到轴
legend = Bind.legend(...)
Bind.add_artist(legend)
Bind.legend(...)