我试图为重叠添加一个颜色图例。我没有这方面的情节,因为这是x和y的重叠,所以我不能像x和y那样从标签中添加图例.我想在图例中有第三行,与x和y相同,紫色和书写重叠。谢谢你的帮助。
X = [3,2,1,30,20,16]
Y = [4,1,6,4,34,21]
#TMM_norm(X,Y,1)
bins=[0,10,20,30,40]
plt.figure
plt.hist(X,bins=bins,edgecolor='black',color='red',alpha=0.5,label='X')
plt.hist(Y,bins=bins,edgecolor='black',color='blue',alpha=0.5,label='Y')
plt.legend()
plt.show
这是我的输出:
1:
发布于 2022-05-21 22:55:27
你将需要混合颜色,并将其添加到传说中。下面的代码将为您完成此操作。记住先添加第二种颜色(下面的代码中是b2,然后是b1 ),这样颜色才能正确地显示出来。可以根据需要编辑最后一行中的图例(X、Y、X和Y)的文本。从这里借来的代码。希望这能有所帮助。
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
X = [3,2,1,30,20,16]
Y = [4,1,6,4,34,21]
bins=[0,10,20,30,40]
def mix_colors(cf, cb): # cf = foreground color, cb = background color
a = cb[-1] + cf[-1] - cb[-1] * cf[-1] # fixed alpha calculation
r = (cf[0] * cf[-1] + cb[0] * cb[-1] * (1 - cf[-1])) / a
g = (cf[1] * cf[-1] + cb[1] * cb[-1] * (1 - cf[-1])) / a
b = (cf[2] * cf[-1] + cb[2] * cb[-1] * (1 - cf[-1])) / a
return [r,g,b,a]
b1 = [1.0, 0.0, 0.0, 0.5]
b2 = [0.0, 0.0, 1.0, 0.5]
b12 = mix_colors(b2, b1) # mix b2 over b1
plt.figure()
plt.hist(X,bins=bins,edgecolor='black',color='red',alpha=0.5)
plt.hist(Y,bins=bins,edgecolor='black',color='blue',alpha=0.5)
plt.legend()
plt.show
b1 = Line2D([0], [0], linestyle='none', marker='s', markersize=10, markerfacecolor=b1)
b2 = Line2D([0], [0], linestyle='none', marker='s', markersize=10, markerfacecolor=b2)
b12 = Line2D([0], [0], linestyle='none', marker='s', markersize=10, markerfacecolor=b12)
plt.legend((b1, b2, b12), ('X', 'Y', 'X & Y'), numpoints=1, loc='best')
输出图
https://stackoverflow.com/questions/72333652
复制