鱼C论坛

 找回密码
 立即注册
查看: 1975|回复: 1

关于(当前无法在3D轴上手动设置长宽比)的问题

[复制链接]
回帖奖励 1 鱼币 回复本帖可获得 1 鱼币奖励! 每人限 1 次(中奖概率 40%)
发表于 2020-3-10 10:43:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我在模拟地球公转曲线,代码如下:
import numpy as np
import matplotlib as mpl
mpl.use("TkAgg")
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animmation
L1 = 10 #地球环绕轨迹的半径
v = 2*np.pi #地球运动的角速度
t = 0
def updata (data): #随时间t变换设置新的地球位置的坐标,也即是随animmation.FuncAnimation函数的帧数参数变化每一帧的不同坐标位置的图片对象参数
    global line
    line.set_data([data[0], data[1]])
    line.set_3d_properties(data[2])
    return line,
def init(): #地球的起始位置
    global line
    ti = 0
    t = t_drange[np.mod(ti, t_dlen)]
    xt1 = x0 + L1 * np.cos(v * t)
    yt1 = y0 + L1 * np.sin(v * t)
    zt1 = z0 + 0
    line, = ax.plot([xt1], [yt1], [zt1], marker='o', color='blue',markersize=8)
    return line
def data_gen(): #随时间t变换的地球坐标,也即是animmation.FuncAnimation函数的帧数参数
    global x0,y0,z0,t_dlen, t
    data = []
    for ti in range(1,t_dlen):
        xt1 = x0 + L1 * np.cos(v * t)  # 地球与太阳坐标关系方程
        yt1 = y0 + L1 * np.sin(v * t)  # 地球与太阳坐标关系方程
        zt1 = z0
        data.append([xt1, yt1, zt1])
        return data
        t = t_drange[ti]

t_range = np.arange(0, 1 + 0.005, 0.005)#设置环绕一周时间的范围以及运动间隔时间
t_drange = np.arange(0, 1, 0.005 )
t_len = len(t_range)
t_dlen = len(t_drange)
x0 = 0
y0 = 0
z0 = 0
x1 = x0 + L1 * np.cos(v * t_range)#地球坐标随时间变化的方程
y1 = y0 + L1 * np.sin(v * t_range)#地球坐标随时间变化的方程
z1 = z0 + np.zeros(t_len)
f = plt.figure(figsize=(6,6))#绘图的画布
ax = f.add_subplot(111,projection='3d')#设置3d坐标系
ax.set_aspect('equal')
ax.set_title("Sun-Earth-Moon Model")#设置图像标题
ax.plot([0], [0], [0], marker='o', color= 'red', markersize=16)#绘制太阳的各种属性
ax.plot(x1, y1, z1, 'r')#绘制地球图像
ax.set_xlim([-(L1 + 2), (L1 + 2)])#地球用动模型在坐标系中的范围
ax.set_ylim([-(L1 + 2), (L1 + 2)])#地球用动模型在坐标系中的范围
ax.set_zlim([-5, 5])#地球用动模型在坐标系中的范围
line, = ax.plot([], [], [], marker='o', color='blue',markersize=8,animated = True)#地球的形状颜色等属性
ani = animmation.FuncAnimation(f, updata, frames = data_gen(), init_func = init,interval = 20)#将上述函数对象传如animmation.FuncAnimation函数以生成连读的地球运动模型

plt.show()

47行的报错为:
C:\Users\Admin\PycharmProjects\shiyan\venv\Scripts\python.exe C:/Users/Admin/Desktop/2.py
Traceback (most recent call last):
  File "C:/Users/Admin/Desktop/2.py", line 47, in <module>
    ax.set_aspect('equal')
  File "C:\Users\Admin\PycharmProjects\shiyan\venv\lib\site-packages\matplotlib\axes\_base.py", line 1264, in set_aspect
    'It is not currently possible to manually set the aspect '
NotImplementedError: It is not currently possible to manually set the aspect on 3D axes

Process finished with exit code 1

It is not currently possible to manually set the aspect on 3D axes的翻译为(当前无法在3D轴上手动设置长宽比)
当我把47行注释之后仿真图可以出来可是一直处于静止状态,估计就是47行语句关于设置3D画面出现的问题
急求大神解惑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-10 14:37:00 | 显示全部楼层
白嫖。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 17:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表