簡體   English   中英

使用matplotlib的手動圖例,使用plot和fill_between的混合

[英]manual legend with matplotlib using mix of plot and fill_between

我正在用matplotlib繪制適合數據的模型結果。 我用彩色線繪制模型結果,並使用fill_between繪制數據,以顯示誤差帶。 我希望我的圖例顯示灰色誤差帶灰色實線 ,即使圖中的曲線和帶以不同的顏色繪制。

我知道如何使用ax.add_artistmatplotlib.lines的組合來完成獨立定義的圖例,但是我不知道如何使用此技巧添加錯誤范圍。

import numpy as np 
from matplotlib.pylab import plt
from matplotlib import lines as mlines

x = np.linspace(0, 1, 100)
y = x + 1
ylow, yhigh = 0.9*np.exp(x), 1.1*np.exp(x)

fig, ax = plt.subplots(1, 1)
curve1 = ax.plot(x, y, color='red')
band1 = ax.fill_between(x, ylow, yhigh, color='blue')

solid_line = mlines.Line2D([], [], ls='-', c='gray', label='gray-colored label for line')
band = mlines.Line2D([], [], ls='-', c='gray', label='(incorrect) gray-colored label for band')
first_legend = plt.legend(handles=[solid_line, band], loc=2)
ax.add_artist(first_legend)

問:我如何才能讓我的傳說,以示對灰色帶band1和灰線curve1

圖稿

您不必僅為圖例繪制新行。 您可以(可能應該)使用帶有標簽的繪圖。 以這種方式創建圖例后,就可以更改legendHandles的顏色。 我希望這是您想要的:

import numpy as np 
from matplotlib.pylab import plt
from matplotlib import lines as mlines

x = np.linspace(0, 1, 100)
y = x + 1
ylow, yhigh = 0.9*np.exp(x), 1.1*np.exp(x)

fig, ax = plt.subplots(1, 1)
curve1 = ax.plot(x, y, color='red', label='gray-colored label for line')
band1 = ax.fill_between(x, ylow, yhigh, color='blue', label='(incorrect) gray-colored label for band')

leg = ax.legend(loc=2)
leg.legendHandles[0].set_color('gray')
leg.legendHandles[1].set_color('gray')
plt.show()

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM