【发布时间】:2021-12-02 19:17:02
【问题描述】:
【问题讨论】:
-
如果您在相同的 x 点处对所有曲线进行了采样,那么您可以为每个 x 点取最小值。如果经过精细采样,它应该是一个足够好的近似值。
【问题讨论】:
您可以取 4 条曲线中的最小值 (np.amin) 并计算其面积(例如,通过 np.trapz)。如果曲线没有公共 x,则首先需要使用共享 x 重新计算它们(例如使用 np.interp)。
from matplotlib import pyplot as plt
from scipy.stats import gaussian_kde
import numpy as np
data = np.random.rand(6, 4) ** 3
x = np.linspace(-1, 2, 200)
ys = []
for label in range(4):
kde_func = gaussian_kde(data[:, label])
y = kde_func(x)
plt.plot(x, y, label=label)
ys.append(y)
y_intersection = np.amin(ys, axis=0)
area = np.trapz(y_intersection, x)
fill_poly = plt.fill_between(x, 0, y_intersection, fc='yellow', ec='black', alpha=0.5,
label=f'intersection: {area:.3f} ')
fill_poly.set_hatch('xxx')
plt.legend()
【讨论】: