如何使用python动画3d图?

时间:2017-04-24 06:23:11

标签: plot animation python

我有这个python代码:

import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as axes3d
from matplotlib import cm

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

# Plot solid of revolution along x-axis
def sor_x(ll, ul):
    u = np.linspace(ll, ul, 60)
    v = np.linspace(0, 2 * np.pi, 60)
    U, V = np.meshgrid(u, v)

    X = U

    Y = (U**2)*np.cos(V)
    Z = (U**2)*np.sin(V)

    ax.set_xlabel('X axis')
    ax.set_ylabel('Y axis')
    ax.set_zlabel('Z axis')
    ax.plot_surface(X, Y, Z, cmap=plt.cm.YlGnBu_r)  

if __name__ == '__main__':
    ll, ul = 0, 1  
    sor_x(ll, ul)
    plt.show()

这绘制了函数y = x**2沿x轴旋转的实体。现在我必须将其更改为这样的3D动画:

enter image description here

mathematica中此动画的代码是:

f[r_, ϕ_, z_] := {(2 + Tan[z])Cos[ϕ], (2 + Cos[z]) Sin[ϕ], z}
vase[α_] := 
   ParametricPlot3D[f[r, ϕ, z], {z, 0, 2  Pi}, {ϕ, 0, α}, 
     AspectRatio -> Automatic, PlotRange -> {{-3, 3}, {-3, 3}, {0, 6}}];
animation = Table[
     vase[ϕ],
     {ϕ, 0.1, 2π, π/12}];
Export["rotationskoerper_animation.gif", animation, 
 ConversionOptions -> {"AnimationDisplayTime" -> 0.1, "Loop" -> True}, 
 ImageSize -> {1000, 1000}]  

0 个答案:

没有答案