Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不同x数据的stackplot_Python_Matplotlib - Fatal编程技术网

Python 不同x数据的stackplot

Python 不同x数据的stackplot,python,matplotlib,Python,Matplotlib,在matplotlib中使用相等的x数据进行堆叠打印,与 from matplotlib import pyplot as plt x0 = [0.0, 0.5, 2.0] y0 = [1.0, 1.5, 1.0] # x1 = [0.0, 1.5, 2.0] y1 = [1.0, 1.5, 1.0] plt.stackplot(x0, (y0, y1)) plt.show() 是否也可以用不同的x数据堆叠两个绘图?似乎不可能。如果查看,则这是绘制堆叠打印本身的零件: # Color b

在matplotlib中使用相等的
x
数据进行堆叠打印,与

from matplotlib import pyplot as plt

x0 = [0.0, 0.5, 2.0]
y0 = [1.0, 1.5, 1.0]

# x1 = [0.0, 1.5, 2.0]
y1 = [1.0, 1.5, 1.0]

plt.stackplot(x0, (y0, y1))
plt.show()

是否也可以用不同的
x
数据堆叠两个绘图?

似乎不可能。如果查看,则这是绘制堆叠打印本身的零件:

# 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()
但如果在这种情况下不能使用插值,那么它将不起作用