matplotlib fill_between facecolor alpha vs edgecolor alpha?

del*_*cco 6 python matplotlib

有没有办法为facecolorvs指定不同的阿尔法edgecolor?或者有没有办法用非 alpha 边缘颜色绘制 alpha 填充区域,该区域也适用于图例

这不是我想要的... 在此处输入图片说明

axs.fill_between(xvalues, tupper_w, tlower_w, facecolor='dimgray', edgecolor='dimgray', alpha=0.25, label='$measured\quad\sigma$')
axs.fill_between(xvalues, pupper_w, plower_w, facecolor='orange', edgecolor='orange', alpha=0.25, label='$predicted\quad\sigma$')
axs.plot(xvalues, tcurvesavg_w, color='dimgray', label='$\overline{measured}$', ls='--')
axs.plot(xvalues, pcurvesavg_w, color='orange', label='$\overline{predicted}$', ls='--')
Run Code Online (Sandbox Code Playgroud)


这就是我想要的(但有适当的图例): 在此处输入图片说明

axs.fill_between(xvalues, tupper, tlower, facecolor='dimgray', alpha=0.25, label='$measured\quad\sigma$')
axs.fill_between(xvalues, pupper, plower, facecolor='orange', alpha=0.25, label='$predicted\quad\sigma$')
axs.plot(xvalues, tupper, color='dimgray', lw=0.5)
axs.plot(xvalues, tcurvesavg, color='dimgray', label='$\overline{measured}$', ls='--')
axs.plot(xvalues, tlower, color='dimgray', lw=0.5)
axs.plot(xvalues, pupper, color='orange', lw=0.5)
axs.plot(xvalues, pcurvesavg, color='orange', label='$\overline{predicted}$', ls='--')
axs.plot(xvalues, plower, color='orange', lw=0.5)
Run Code Online (Sandbox Code Playgroud)

Imp*_*est 7

您不能通过alpha参数指定不同的 alpha 值。但是,您可以使用 Alpha 通道定义每个facecoloredgecolor,例如,不透明度为 40% 的红色

facecolor=(1,0,0,.4)
Run Code Online (Sandbox Code Playgroud)

然后将其直接应用于图例中。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0.0, 2, 0.01)
y1 = np.sin(2*np.pi*x)
y2 = 1.2*np.sin(4*np.pi*x)-.9

fig, ax = plt.subplots()

ax.fill_between(x, y1, y1+.5, facecolor=(1,0,0,.4), edgecolor=(0,0,0,.5), label="Label 1")
ax.fill_between(x, y2, y2-.5, facecolor=(0,0,1,.4), edgecolor=(0,0,0,.5), label="Label 1")

ax.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明