2016-02-02 149 views
0

我需要使用matplotlib绘制圆柱面。Python中圆柱面的3D绘图

我不明白为什么我的代码是不工作...

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import numpy as np 

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

u = np.linspace(0, 2 * np.pi, 1) 

x = 10 * np.cos(u) 
y = 10 * np.sin(u) 
z = 10 
ax.plot_surface(x, y, z, rstride=4, cstride=4, color='b') 

plt.show() 
+0

首先,您只能创建一个“u”值。其次,你不创建一个曲面,但是在'z = 10'处只有一个半径为10的圆。你想要达到什么目的? –

+0

一个人在那里,因为我感到沮丧,并试图随机数字只是为了看看会发生什么。 我需要一个以z轴为中心的管道表面图。 – ful1meta1

回答

0

你需要生成一个二维表面的坐标使用ax.plot_surface

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import numpy as np 

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

us = np.linspace(0, 2 * np.pi, 32) 
zs = np.linspace(0, 10, 2) 

us, zs = np.meshgrid(us, zs) 

xs = 10 * np.cos(us) 
ys = 10 * np.sin(us) 
ax.plot_surface(xs, ys, zs, color='b') 

plt.show() 

这生产

enter image description here