我正在考虑 3 个变量:时间 (t)、一维空间 (x) 和强度 (I)。我想将 z 轴上的强度绘制为 t 和 x 的函数(后两个变量将形成 xy 平面)。对于我拥有的当前数据,这些变量本身是二维数组,其中来自不同数组的每个对应索引都与单个数据点(即(x,t,I) = (x[k,i],t[k,i],I[k,i]))适当匹配。(理想情况下,这种方法将扩展到维数大于 2 的数组。)
这是一组示例数据:
I = [[ 10.55 0. 0.]
[ 0. 0. 0.01]
[ 0.2 -0.1 3.33]
[ 0. 2.14 0.]
[ 0. 3.80 0.]
[ 9.02 0. 0.]]
t = [[ 0. 400. 1000.]
[ 1. 300. 800.]
[ 0. 500. 900.]
[ 200. 400. 0.]
[ 100. 700. 0.]
[ 0. 0. 0.]]
x = [[ 0. 0. 0.]
[ 500. 1500. 1500.]
[ 3000. 3000. 8000.]
[ 3300. 4500. 0.]
[ 6000. 6000. 0.]
[ 7500. 0. 0.]]
z[k,i] = t[k,i] = 0.请注意:每行的长度已在数组中等效,但如果ifk != 0和 ,则理想情况下它们应该为 null i != 0。如您所知,在上面的示例中,有 4 个这样的元素对应于索引:[k,i] = [3,2], [4,2], [5,1], [5,2]. 虽然这些只会影响坐标(0,0,0)。
重申我的目标:我想将 t、x 和 I 绘制为 3 维曲面。过去,使用如下代码:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
X, Y = np.meshgrid(t,x)
ax = fig.add_subplot(1,1,1, projection='3d')
surf = ax.plot_surface(X,Y,I, rstride=4, cstride=4, alpha=0.1)
适用于 x 和 t 是一维数组的情况。但是我很好奇将上面显示的示例数据建模为 3 维表面的任何好的方法,其中存在不均匀的网格。
