我想在 2D 笛卡尔平面上生成具有离散弧形单元的曲面图。我可以通过绘制 3D 曲面图(使用plot_surface
)并从顶部查看它来获得不错的结果,但 matplotlib 对 3D 有点挑剔,所以我更喜欢在 2D 中执行此操作。我也可以pcolormesh
在极坐标图上使用获得类似的结果,但同样,我想要一个 2D 笛卡尔平面。如何在 matplotlib 中执行此操作?
口粮:
import numpy as np
import matplotlib.pyplot as plt
r = np.linspace(2, 5, 25)
theta = np.linspace(0, np.pi, 25)
R, Theta = np.meshgrid(r, theta)
X = R*np.cos(Theta)
Y = r*np.sin(Theta)
U = R*np.cos(Theta)*np.exp(R*Theta/500)
fig, ax = plt.subplots(figsize=(8,6), subplot_kw={"projection":"3d"})
surf = ax.plot_surface(X, Y, U, cmap="viridis", rstride=1, cstride=1)
ax.view_init(elev=90, azim=-90)
ax.set_proj_type("ortho")
ax.zaxis.line.set_lw(0.)
ax.set_zticks([])
ax.set_aspect("equalxy")
fig.colorbar(surf, shrink=0.5, aspect=5)
fig.tight_layout()
fig, ax = plt.subplots(figsize=(8,6), subplot_kw={"projection":"polar"})
ax.pcolor(Theta, R, U, shading="nearest")
ax.set_xlim(0, np.pi)
ax.grid(False)
fig.tight_layout()
3D剧情版本:
2D 极坐标图版本:
一个解决方案可能是将楔形斑块组合在一起。