将两个图例标签放在同一个p中的不同位置

2024-09-26 22:08:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三个情节合并在一个图形中,包含了许多值得注意的信息。我最近能够对图例标签进行颜色编码,而不是用它们的关联线来标记它们。在

enter image description here

但当我试图在其中一个图的另一个位置添加另一组标签时,原来的标签就消失了

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()

enter image description here

在同一个子批次中有两个标签的有效方法是什么?在


Tags: importgsgetmatplotlibbindasplt标签
1条回答
网友
1楼 · 发布于 2024-09-26 22:08:55

从matplotlib图例指南的Multiple legends on the same axes一章中可以看出,在创建第二个图例之前,您需要将第一个图例作为艺术家添加到轴上

legend = Bind.legend(...)
Bind.add_artist(legend)
Bind.legend(...)

相关问题 更多 >

    热门问题