gpt4 book ai didi

python - 填充3D线图Python上线之间的区域

转载 作者:行者123 更新时间:2023-12-01 08:52:42 25 4
gpt4 key购买 nike

我有一个 3D 线图,上面有 13 条线。

我想对线条之间的区域(沿 y 轴)进行阴影处理,使其具有阴影山的外观。

enter image description here有没有办法做到这一点?我尝试将拥有的数据转换为 2D 数组,以便可以绘制 x 和 y 数据的曲面图,但 x 数据的长度为 101 个项目,而 y 数据只是 13 个值之一。

最佳答案

您必须使用 3D 多边形。看这个例子:https://matplotlib.org/gallery/mplot3d/polys3d.html

polys3d.py:

from matplotlib.collections import PolyCollection
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import poisson

# Fixing random state for reproducibility
np.random.seed(19680801)


def polygon_under_graph(x, y):
"""
Construct the vertex list which defines the polygon filling the space under
the (x, y) line graph. This assumes x is in ascending order.
"""
return [(x[0], 0.), *zip(x, y), (x[-1], 0.)]

ax = plt.figure().add_subplot(projection='3d')

x = np.linspace(0., 10., 31)
lambdas = range(1, 9)

# verts[i] is a list of (x, y) pairs defining polygon i.
verts = [polygon_under_graph(x, poisson.pmf(l, x)) for l in lambdas]
facecolors = plt.colormaps['viridis_r'](np.linspace(0, 1, len(verts)))

poly = PolyCollection(verts, facecolors=facecolors, alpha=.7)
ax.add_collection3d(poly, zs=lambdas, zdir='y')

ax.set(xlim=(0, 10), ylim=(1, 9), zlim=(0, 0.35),
xlabel='x', ylabel=r'$\lambda$', zlabel='probability')

plt.show()

关于python - 填充3D线图Python上线之间的区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53001200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com