Python 从嵌套字典开发matplotlib曲面

Python 从嵌套字典开发matplotlib曲面,python,matplotlib,Python,Matplotlib,我有一个由以下内容生成的数据结构(其中[a]func1和func2是占位符函数,[b]i1等是占位符变量值): 这将产生如下数据结构: {i1 : {j1 : {k1 : [func1_val, func2_val], ...}, ...}, ...} 我正在尝试创建这样的图(伪代码) 或 我如何在字典中循环,以便将这些值提取到工作容器中,以便在matplotlib或其他程序中使用 谢谢 进行matplotlib绘图的标准方法是使用存储在numpy数组中的数据 在本例中,您可以定义网格: me

我有一个由以下内容生成的数据结构(其中[a]func1和func2是占位符函数,[b]i1等是占位符变量值):

这将产生如下数据结构:

{i1 : {j1 : {k1 : [func1_val, func2_val], ...}, ...}, ...}
我正在尝试创建这样的图(伪代码)

我如何在字典中循环,以便将这些值提取到工作容器中,以便在matplotlib或其他程序中使用


谢谢

进行matplotlib绘图的标准方法是使用存储在numpy数组中的数据

在本例中,您可以定义网格:

mesh1, mesh2, mesh3 = np.meshgrid(var1, var2, var3)
它将定义3个三维阵列,这些阵列可以用作matplotlib曲面图的输入

然后,可以无循环地调用函数,操作将直接按元素执行。i、 e

res1 = func1(mesh1,  mesh2, mesh3) 
并最终使用类似于此伪代码的代码进行绘图:

for i in var1:
    plt.plot_surface(mesh2[i,:,:], mesh3[i,:,:], res1[i,:,:]) 
但是,对于非常大的阵列,创建三维网格可能会消耗大量内存。因此,构建二维网格并在第三层上循环可能是一个更好的主意。这方面的一个例子是:

mesh2, mesh3 = np.meshgrid(var2, var3) # it can be defined outside because only var1 varies during the loop
for i in var1:
    res1 = func1(i,mesh2,mesh3)
    plt.plot_surface(mesh2, mesh3, res1) 

您是否考虑过将数据保存在numpy数组中?我没有,但我会检查一下。
res1 = func1(mesh1,  mesh2, mesh3) 
for i in var1:
    plt.plot_surface(mesh2[i,:,:], mesh3[i,:,:], res1[i,:,:]) 
mesh2, mesh3 = np.meshgrid(var2, var3) # it can be defined outside because only var1 varies during the loop
for i in var1:
    res1 = func1(i,mesh2,mesh3)
    plt.plot_surface(mesh2, mesh3, res1)