有与“Axes3”相当的吗DSubplot.plot_表面“在2D里?
我试图在matplotlib中绘制网格在XY平面上的投影(因此不是在“3d”模式下)。在import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# Data (wireframe sphere)
theta, phi = np.meshgrid( np.linspace(0, np.pi/2, 10), np.linspace(0, np.pi/2, 10) )
x = np.sin(theta) * np.cos(phi)
y = np.sin(theta) * np.sin(phi)
z = np.cos(theta)
fig = plt.figure()
# Subplot 3D
ax1 = fig.add_subplot(1, 2, 1, projection='3d', aspect='equal')
colors = matplotlib.cm.jet(np.hypot(x,y))
surface = ax1.plot_surface(x, y, z, rstride=1, cstride=1, facecolors = colors, alpha=0.5 )
projection = ax1.plot_surface(0, y, z, rstride=1, cstride=1, facecolors = colors )
projection.set_edgecolor('k')
# Subplot 2D
ax2 = fig.add_subplot(1, 2, 2, aspect='equal')
ax2.plot(y, z, 'k')
ax2.plot(y.T, z.T, 'k')
我试图得出一个类似的结果:
^{pr2}$
但在二维子图中。在AxesSubplot的文档中找不到plot_surface的等效项。我唯一能做的就是绘制线框(而不是面颜色):ax2.plot(y, z, 'k')
ax2.plot(y.T, z.T, 'k')
我不能上传图片,但基本上,我想把“颜色”放在第二个子图中。
谢谢
编辑:
@蒂姆
是的,我想,在这种情况下,我设法做到了:ax2.contourf(y, z, np.hypot(x,y), levels=np.hypot(x,y)[0], cmap=matplotlib.cm.jet)
在更一般的情况下,您需要使用正确的level函数,并对levels和colormap进行一些调整,但这似乎是可行的。在
另一个解决方案是使用matplotlib.patches.Polygon绘制每个投影面。在