我有一个依赖于 x 和 y 位置以及时间的函数。
我使用 sympy 进行一些符号计算,然后使用 lamdify 函数绘制结果。
我的功能是:
T = sym.cos(x**2 + y**2 + t**2)
我想要绘制 x 与时间的 2 个二维图 -> 由 T 和 y 与时间着色 -> 由 T 着色
目前我有,
import numpy as sp
import numpy as np
from matplotlib import pyplot as plt
x, y, t =sym.symbols("x y t")
T = 0.5*sym.cos(x**2 + y**2 + t**2)
# Function for plotting
def myContourPlot(x_list, y_list, time_list, f):
x_value, y_value, time_value = np.meshgrid(x_list, y_list, time_list)
fig,ax=plt.subplots(1,1)
z = f(x_value, y_value, time_value)
cp = ax.contourf(x_value[0, :, :], time_value[0, :, :], z[0, :, :], np.linspace(np.min(z[0, :, :]), np.max(z[0, :, :]),100) )
fig.colorbar(cp) # Add a colorbar to a plot
ax.set_title('Contour plot')
ax.set_xlabel('x [m]')
ax.set_ylabel('time [s]')
plt.show()
fig2,ax2=plt.subplots(1,1)
cp2 = ax2.contourf(y_value[:, :, 0], time_value[:, :, 0], z[:, :, 0], np.linspace(np.min(z[:, :, 0]), np.max(z[:, :, 0]),100) )
fig2.colorbar(cp2) # Add a colorbar to a plot
ax2.set_title('Contour plot')
ax2.set_xlabel('y')
ax2.set_ylabel('time')
plt.show()
x_list = np.linspace(0,1, 100 )
y_list = np.linspace(0,1.5, 100 )
time_list = np.linspace(0,3, 100 )
f = sym.lambdify((x, y, t), T)
myContourPlot(x_list, y_list, time_list, f)
我想知道如何对 meshgrid 数组进行切片以获得 x vs time 对应的 T 值和相同的颜色y vs 时间。
目前,x vs time 是有颜色的,但 y vs time 不是。
任何帮助将不胜感激!