Matplotlib:将 3D Mesh 网格切片为 2D 并绘制计数图

时间:2021-04-19 09:28:27

标签: python matplotlib

我有一个依赖于 xy 位置以及时间的函数。

我使用 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 不是。

任何帮助将不胜感激!

0 个答案:

没有答案