2016-07-17 2 views
3

I-Code geschrieben habe, einen Zylinder mit einem konstanten festen Radius zu erzeugen:Wie ein Zylinder mit nicht-konstantem Radius plotten

import numpy as np 
from matplotlib import pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 
from math import sin, cos, pi 

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

theta = np.linspace(-2*pi,2*pi, 600) 
Z = np.linspace(0,1,700) 

Z,theta = np.meshgrid(Z, theta) 

R = 0.1 
X = (R*np.cos(theta)) 
Y = (R*np.sin(theta)) 

ax.plot_surface(X,Y,Z,linewidth = 0,facecolor = 'r', shade = True, alpha = 0.6) 
plt.show() 

Wie kann ich das ändern, so dass der Zylinderradius variieren kann. Zum Beispiel beginnt der Radius bei 0,1 an dem einen Ende des Zylinders und jeder nachfolgende "Kreis" hat einen Radius von 0,01 mehr als vorher? Mit anderen Worten, ich möchte Kreise mit verschiedenen Radien verbinden, um einen Zylinder mit nicht konstantem Radius zu bilden.

Antwort

3

R = np.linspace(0,1,700) Changed

import numpy as np 
from matplotlib import pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 
from math import sin, cos, pi 

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

theta = np.linspace(-2*pi,2*pi, 600) 
Z = np.linspace(0,1,700) 

Z,theta = np.meshgrid(Z, theta) 

R = np.linspace(0,1,700) 
X = (R*np.cos(theta)) 
Y = (R*np.sin(theta)) 

ax.plot_surface(X,Y,Z,linewidth = 0,facecolor = 'r', shade = True, alpha = 0.6) 
plt.show() 

Sie auch eine Funktion wie R = np.sin(np.linspace(0,1,700) * 4) + 1

+0

Dank ausprobieren können! Ich akzeptiere in Kürze (sobald die Zeitbegrenzung abgelaufen ist) – fosho

+0

Ihre Begrüßung :) –

+0

Schön, und dann fügen Sie einfach zu R wie 'R = np.linspace (0,1,700) + 2', um den Kegel zu öffnen – EL3PHANTEN