Это не представляется возможным. Если вы посмотрите на code for Matplotlib's stackplot, то это та часть, которая рисует сам сюжет: сложены
# Color between array i-1 and array i
for i in xrange(len(y) - 1):
color = axes._get_lines.get_next_color()
r.append(axes.fill_between(x, stack[i, :], stack[i + 1, :],
facecolor=color,
label= six.next(labels, None),
**kwargs))
Так что всегда будет использовать тот же x
для всех стеков.
С другой стороны, вы можете создать новый массив x
для сложного графика и включить все значения из всех разных массивов x
, а затем вычислить недостающие значения y стека, используя линейную интерполяцию.
Возможное решение с использованием интерполяции может выглядеть следующим образом:
from matplotlib import pyplot as plt
def interp_nans(x, y):
is_nan = np.isnan(y)
res = y * 1.0
res[is_nan] = np.interp(x[is_nan], x[-is_nan], y[-is_nan])
return res
x = np.array([0.0, 0.5, 1.5, 2.0])
y0 = np.array([1.0, 1.5, np.nan, 1.0])
y1 = np.array([1.0, np.nan, 1.5, 1.0])
plt.stackplot(x, (interp_nans(x, y0), interp_nans(x, y1)))
plt.show()
Но если интерполяция не может быть использована в данном случае, то он не будет работать.