【发布时间】:2017-11-05 22:10:58
【问题描述】:
我的目标是通过能够“告诉”Python 增加存在于所述方程中的“t”变量,为超特定(规范)扩散方程设置动画。我在 Mathematica 中很容易做到这一点,但需要使用 Python 来完成我分配的研究项目。
该方程的结构/定义为c(x,y,t),显然我的问题适用于c(x,y,t) 设置为相等的任何类型的函数。每个答案都与我的问题有关:
1) 不包括不是 PDE 的函数
2) 包括不增加时间变量 (t)
此外,我找不到任何在 Python 上绘制 2 个变量的 3D 方程的方法。
编辑:我想出了一个办法。
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import random
def fun(x, t):
return x+t #Any equation
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.arange(-20.0, 20.0, 0.05)
t = np.arange(0.0,50.0,1)
X, Y = np.meshgrid(x, t)
zs = np.array([fun(x,t) for x,t in zip(np.ravel(X), np.ravel(Y))])
Z = zs.reshape(X.shape)
ax.plot_surface(X, Y, Z)
ax.set_xlabel('X Position')
ax.set_ylabel('Time')
ax.set_zlabel('Concentration')
plt.show()
学分:维姆I want to use matplotlib to make a 3d plot given a z function
任何帮助或动画过程的简单代码都意义重大,因为我的研究项目涉及 7D 数学,这本质上是我正在尝试做的非平凡表示的最基本示例。所以期待更多问题的出现(无论答案如何)。
【问题讨论】:
-
到底是什么问题?是什么阻碍了您为您的案例调整您找到的任何 matplotlib 动画示例?您显示的代码中也没有任何
c(x,y,z,t)。它也不会尝试为任何东西设置动画。从这个意义上说,这可能过于宽泛,无法在这里回答。另请注意,Stackoverflow 无法为您完成您的研究项目(否则为什么它会是您的项目而不是 SO 社区的项目?)。 -
@ImportanceOfBeingErnest 实际上,这甚至还不是解决问题表面所需的数学创造力的开始。相反,这仅用于演示实验设置。离题了,我附加的代码是绘制 3D 方程的解决方案。它只是用来表明我只需要为该方程设置动画。实际上,c(x,y,z,t) 是不准确的:我想通过能够操纵方程中已经存在的 t 变量来将 c(x,y,t) 视为动画(请参阅编码)。为不准确表示歉意。我现在将对其进行编辑。
-
所以你基本上想要为
plot_surface情节设置动画。如果你用谷歌搜索,你会找到How to animate 3d plot_surface in matplotlib。因此,这与已经存在的问题重复。 -
@ImportanceOfBeingErnest 我之前看过那个提要。该代码的问题是时间变量没有增加,也没有涉及 x、y 和 t 的方程。所以我的问题是,你如何得到一个已经有时间变量的特定方程的结果?该代码没有回答这个问题,因为方程中的变量对“c”输出值(z 坐标)有其自身的依赖性。
-
当然你有责任在代码中引入
t变量而不是那里所谓的framenumber。关键是你需要尝试一些东西;所以如果你实现了有问题的代码然后发现了问题,你可以在这里问,但你不能在这里问只是“给我 codz”。
标签: python animation matplotlib 3d