如何在3D图中缩放和设定RGB正交坐标轴?

2024-09-30 16:30:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想画一个一维的波函数,但它有实部和虚部,所以我做了一个三维动画。这是一个截图:

Wave function

我想做的主要事情是沿着x轴展开(现在是垂直的),这样看起来就不会被挤压。另外,最好将其设置为一组3个在点(0,0,0)相交的RGB轴。在文档中我找不到任何直接的方法来做这件事。我附加了我用来设置动画的部分代码:

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import mpl_toolkits.mplot3d.axes3d as p3

fig = plt.figure()
ax = fig.gca(projection='3d')
line, = ax.plot(REAL[0,:],IMAG[0,:],x,"r",linewidth=0.5)

def animacio(i):
    ax.collections.clear()
    line.set_data(REAL[i,:],IMAG[i,:])
    line.set_3d_properties(x, 'z')
    return line,

ani = animation.FuncAnimation(fig,animacio,interval=50, frames=Nt,repeat=True)
nom = 'Evolució_'
ani.save(str(nom)+'['+str(V0)+','+str(L)+','+str(l)+','+str(xi)+','+str(sigmax)+','+str(T)+']'+'.mp4', writer="ffmpeg", dpi=300)
plt.show()

print('Animation saved as: '+str(nom)+'['+str(V0)+','+str(L)+','+str(l)+','+str(xi)+','+str(sigmax)+','+str(T)+']'+'.mp4')

Tags: importmatplotlibaslinefigpltaxnom
1条回答
网友
1楼 · 发布于 2024-09-30 16:30:32

只需指定起点和终点并指定颜色,就可以将彩色线添加到绘图中。“向上”轴的限制可以通过ax.set_zlim设置。我创建了一个大致类似于你的演示曲线

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

x = np.linspace(-10, 10, 1000)
y = np.sin(10*x)/(x*x+1)
z = np.cos(10*x)/(x*x+1)
ax = plt.axes(projection='3d')
ax.plot3D([0,0], [0,0], [-10,10], color='crimson')
ax.plot3D([0,0], [-1,1], [0,0], color='limegreen')
ax.plot3D([-1,1], [0,0], [0,0], color='dodgerblue')
line, = ax.plot3D(y, z, x, color='blueviolet')
ax.set_zlim(-1, 1)
plt.show()

左侧是无限制的绘图,右侧是有限制的绘图: resulting images

要获得更拉长的视图,可以使用以下内容:

plt.gcf().set_size_inches(4, 12)

相关问题 更多 >