使用matplotlib从文件中绘制数据分析的3d绘图

时间:2014-08-06 11:19:11

标签: python matplotlib plot 3d

我需要对来自文件的数据计算2个函数mutualinfo2dmutualinfo3d,并获得这些分析的3d图。 我必须遍历所有使用3个数字编制索引的文件:

第一个和第三个是参数,这些值在文件名之间变为两个数组,mu krat已知并给定。

第二个数字表示文件的类型(是我的代码的输入)

因此,对于每个文件,我得到一个数字,该数字必须是我对3d绘图所引用的参数mu krat的值,该参数表示文件名。

因此循环遍历参数我计算这些函数放在列表中,最后我想要一个3d图,其中x,y是mu krat,z是使用我的函数计算的值{{ 1}}和mutualinfo2d

我写了一个简单的脚本,运行在这些文件上并正确分析它们,我能够使我的函数的2d图修复两个参数中的一个,但我无法一起变化并恢复3d图。

这是我写的用于获取3d plot的代码:

mutualinfo3d

我得到了不同的3D情节空...我想只有一个3d情节,但有三个不同的表面! 我不是很喜欢3D绘图,所以我希望找到一个可以帮助我的人!

非常感谢

1 个答案:

答案 0 :(得分:0)

代码中的问题可能在plot_surface命令之前。

一个例子:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

# create some surfaces
X, Y = np.meshgrid(np.arange(10, dtype='float'), np.arange(8, dtype='float'))
z1 = X+Y
z2 = X-Y
z3 = np.sin(Y / 8. * 2* np.pi)

N1 = z1 / z1.max()
N2 = z2 / z2.max()
N3 = z3 / z3.max()

# create the figure
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.plot_surface(X, Y, z1, cstride=1, rstride=1, facecolors=plt.cm.jet(N1), linewidth=0, shade=False)
ax.plot_surface(X, Y, z2, cstride=1, rstride=1, facecolors=plt.cm.jet(N2), linewidth=0, shade=False)
ax.plot_surface(X, Y, z3, cstride=1, rstride=1, facecolors=plt.cm.jet(N3), linewidth=0, shade=False)

这给了它应该的东西:

enter image description here

检查您的inf0N(等)是否有效。如果渐变中只有一个nan,则归一化(N的计算)将给出一个充满nan s的数组,然后不会绘制任何内容。