在MATLAB中,使用stem3命令制作三维树干图非常容易。matplotlib中有类似的命令吗?我查了最新版本的在线文档,但是没有找到。谁能给予一些建议,如何把这些数据绘制成3d干图?
stem3
import numpy as np N = 50 theta = np.linspace(0, 2*np.pi, N, endpoint=False) x = np.cos(theta) y = np.sin(theta) z = range(N)
7hiiyaii1#
我不知道matplotlib中有没有stem3的直接等价物,但是使用Line3Ds绘制这样的图形(至少在基本形式上)并不难:
import matplotlib.pyplot as plt import mpl_toolkits.mplot3d.art3d as art3d import numpy as np fig = plt.figure() ax = fig.add_subplot(1, 1, 1, projection='3d') N = 100 theta = np.linspace(0, 2*np.pi, N, endpoint=False) x = np.cos(theta) y = np.sin(theta) z = range(N) for xi, yi, zi in zip(x, y, z): line=art3d.Line3D(*zip((xi, yi, 0), (xi, yi, zi)), marker='o', markevery=(1, 1)) ax.add_line(line) ax.set_xlim3d(-1, 1) ax.set_ylim3d(-1, 1) ax.set_zlim3d(0, N) plt.show()
qltillow2#
就像乌努特布的,只是有一个常规的情节:
from mpl_toolkits.mplot3d import Axes3D fig = figure() ax = fig.add_subplot(111, projection='3d') x = [2,4,1,3] y = [3,5,6,7] z = [4,5,6,7] for xx,yy,zz in zip(x,y,z): plot([xx,xx], [yy,yy], [0,zz], '-')
4ktjp1zp3#
内置的ax.stem现在有原生的3D支持,只需通过subplot_kw创建3D轴,并将3个数组传递给ax.stem:
ax.stem
subplot_kw
import matplotlib.pyplot as plt fig, ax = plt.subplots(subplot_kw={'projection': '3d'}) # ------------------------------- ax.stem(x, y, z) ax.set(xlabel='x', ylabel='y', zlabel='z')
请注意,可以沿着任何轴重新定向股骨柄:
orientation='z'
xy
z
orientation='y'
xz
y
orientation='x'
yz
x
fig, ax = plt.subplots(subplot_kw={'projection': '3d'}) ax.stem(x, y, z, orientation='x') # ---------------
3条答案
按热度按时间7hiiyaii1#
我不知道matplotlib中有没有
stem3
的直接等价物,但是使用Line3Ds绘制这样的图形(至少在基本形式上)并不难:qltillow2#
就像乌努特布的,只是有一个常规的情节:
4ktjp1zp3#
matplotlib 3.4.0中的新增功能
内置的
ax.stem
现在有原生的3D支持,只需通过subplot_kw
创建3D轴,并将3个数组传递给ax.stem
:请注意,可以沿着任何轴重新定向股骨柄:
orientation='z'
:词干以xy
平面为根,沿着z
投影**(默认)**orientation='y'
:茎扎根于xz
平面,沿着y
投影orientation='x'
:茎扎根于yz
平面,沿着x
投影