MATLAB“stem3”有对应的matplotlib吗?

fnatzsnv  于 2023-01-26  发布在  Matlab
关注(0)|答案(3)|浏览(112)

在MATLAB中,使用stem3命令制作三维树干图非常容易。
matplotlib中有类似的命令吗?我查了最新版本的在线文档,但是没有找到。谁能给予一些建议,如何把这些数据绘制成3d干图?

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)
7hiiyaii

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()

qltillow

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], '-')

4ktjp1zp

4ktjp1zp3#

matplotlib 3.4.0中的新增功能

内置的ax.stem现在有原生的3D支持,只需通过subplot_kw创建3D轴,并将3个数组传递给ax.stem

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')
#                ---------------

相关问题