如何在 3D 绘图中缩放和设置 RGB 正交轴?
How to scale and set up RGB ortogonal axes in a 3D plot?
我正在尝试在一维上绘制波函数,但它有实部和虚部,所以我制作了它的 3D 绘图动画。这是截图:
我想做的主要事情是沿着 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')
您可以在绘图中添加彩色线条,只需指定起点和终点并指定颜色即可。 'up' 轴的限制可以通过 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()
左边是无限制的图,右边是有限制的图:
要获得更细长的视图,您可以使用类似的东西:
plt.gcf().set_size_inches(4, 12)
我正在尝试在一维上绘制波函数,但它有实部和虚部,所以我制作了它的 3D 绘图动画。这是截图:
我想做的主要事情是沿着 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')
您可以在绘图中添加彩色线条,只需指定起点和终点并指定颜色即可。 'up' 轴的限制可以通过 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()
左边是无限制的图,右边是有限制的图:
要获得更细长的视图,您可以使用类似的东西:
plt.gcf().set_size_inches(4, 12)