首页 > 解决方案 > Python:如何以堆叠/分层的方式绘制一系列区域?

问题描述

我有几个不同的区域来测量给定条件下某事物的二维空间事件。条件用区域的颜色编码。这些区域通常是多边形(即使我已经绘制了圆圈)并且可以在其中有孔,例如:

在此处输入图像描述

为了增加可视化的清晰度,我被要求将其变成所谓的“婚礼蛋糕图”,其中每个区域彼此垂直偏移,每个区域周围都有垂直边。有点像下面的画图:

在此处输入图像描述

如何使用 Matplotlib 或其他 Python 绘图包执行此操作?

标签: pythonmatplotlibdata-visualization

解决方案


你可以这样做plot_surface

# sample data
data = np.zeros((20,24))
data[2:18, 2:18] = 1
data[4:16, 4:16] = 2
data[6:14,6:14] = 3
data[8:12,8:12] = 2

# 2D view
plt.imshow(data, cmap='Reds')

# mesh
X,Y=np.mgrid[0:data.shape[0], 0:data.shape[1]]


# plot
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})

surf = ax.plot_surface(X, Y, data, cmap='hot',
                       linewidth=0, antialiased=False)

输出:

在此处输入图像描述

注意您需要正确地对数据进行分层标记。


推荐阅读