【问题标题】:How to plot a helix around the curve given by list?如何围绕列表给出的曲线绘制螺旋线?
【发布时间】:2021-01-27 18:36:05
【问题描述】:

如何围绕列表给出的橙色曲线绘制螺旋线?方位角、仰角和 figsize 设置为所需的结果。

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

A = [-0.1646169553829357, -0.18045534297929358, -0.19607272004818602, -0.211354488132617, -0.22616904489940454, -0.24036624624003963, -0.25377639986609546, -0.26621030641288784, -0.27746107555189253, -0.287309176814374, -0.2955313683720342, -0.3019143406048014, -0.3062726740423563]
B = [0.13385167110565344, 0.13161004556697875, 0.12815132761818687, 0.1234273074581178, 0.11739746666382476, 0.11003213593352616, 0.10131707253912245, 0.09125949610772532, 0.07989522181968708, 0.06729724452652447, 0.053583847907859236, 0.038924841462667246, 0.023542804704085943]

# Plot figure with size
figsize=(10,5)
fig = plt.figure(figsize=figsize)

# Axes 
ax = fig.gca(projection = '3d')
azimuth=90
elevation=90
ax.azim = azimuth    # y rotation (default=270)
ax.elev = elevation  # x rotation (default=0)

r = 0.1
c = 0.5
t = np.linspace(0, 5000, 100)

# parametric equation of a helix
x = r*cos(t)
y = r*sin(t)
z = c*t
ax.plot(x, y, z, zdir='z', lw=2)
ax.plot(A, B)
plt.show()

所需的结果是穿过螺旋中心的橙色曲线。

【问题讨论】:

    标签: python-3.x matplotlib helix


    【解决方案1】:

    您能否详细说明或在曲线中添加更多细节?

    from mpl_toolkits.mplot3d import Axes3D  
    
    import matplotlib.pyplot as plt
    from matplotlib import cm
    from matplotlib.ticker import LinearLocator, FormatStrFormatter
    import numpy as np
    
    
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    
    u=np.linspace(0,4*np.pi,50);
    v=np.linspace(0,2*np.pi,50);
    u,v=np.meshgrid(u, v) ;
    x=(1.2+0.5*np.cos(v))*np.cos(u);
    y=(1.2+0.5*np.cos(v))*np.sin(u);
    z=0.5*np.sin(v)+u/np.pi;
    
    # Plot the surface.
    surf = ax.plot_surface(x,y,z, cmap=cm.jet,
                           linewidth=0, antialiased=False)
    #plot the 3d line
    u = np.linspace(0,4*np.pi,40)
    x=1.2*np.cos(u);
    y=1.2*np.sin(u);
    z=u/np.pi;
    ax.plot(x,y,z,'b');
    

    fig = plt.figure()
    ax = fig.gca(projection='3d')
    
    u=np.linspace(0,4*np.pi,50);
    v=np.linspace(0,2*np.pi,50);
    u,v=np.meshgrid(u, v) ;
    x=(1.2+0.5*np.cos(v))*np.cos(u);
    y=(1.2+0.5*np.cos(v))*np.sin(u);
    z=0.5*np.sin(v)+u/np.pi;
    
    # Plot a basic wireframe.
    ax.plot_wireframe(x, y, z, cmap=cm.viridis, rstride=1, cstride=1)
    
    #plot the 3d line
    u = np.linspace(0,4*np.pi,40)
    x=1.2*np.cos(u);
    y=1.2*np.sin(u);
    z=u/np.pi;
    ax.plot(x,y,z,'b');
    

    【讨论】:

    • 我在我的问题中添加了我的期望 - 一条曲线和它周围的螺旋线。
    • 非常感谢您的回答。以及如何通过列表和沿曲线的螺旋线绘制我的问题中定义的橙色曲线?
    • 我想用我的默认数据替换你的数据。
    • 非常感谢
    猜你喜欢
    • 2019-11-20
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    相关资源
    最近更新 更多