Python matplotlib.pyplot contourf函数在打印常规数据时引入孔或间隙
我正在尝试使用matplotlib.pyplot中的contourf函数绘制3D数据集。所有这些都在iPython笔记本中运行。数据的表面图看起来不错,但轮廓图有一个大洞 我正在使用的代码的简化版本是:Python matplotlib.pyplot contourf函数在打印常规数据时引入孔或间隙,python,matplotlib,plot,ipython,Python,Matplotlib,Plot,Ipython,我正在尝试使用matplotlib.pyplot中的contourf函数绘制3D数据集。所有这些都在iPython笔记本中运行。数据的表面图看起来不错,但轮廓图有一个大洞 我正在使用的代码的简化版本是: import numpy as np # import modules import scipy.io as spio import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure
import numpy as np # import modules
import scipy.io as spio
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(12,5))
zMin = 1.2
data = spio.loadmat('./OD_SurfMatFiles/surf_k2_c3.mat')
X = data['xVal']
Y = data['yVal']
Z = data['zVal']
plotX, plotY = numpy.meshgrid(X, Y)
ax = fig.add_subplot(1,2,1, projection='3d')
colourLevels = [0.0, 0.4, 0.8, 1.2, 1.6, 2.0, 2.4];
cset = ax.contourf(plotX, plotY, Z, colourLevels, zdir='z',offset=zMin, cmap=cm.autumn)
CB = plt.colorbar(cset, shrink=0.5, extend='both')
结果如下所示:
正在绘制的数据从MATLAB导出:
xVal =
384 416 448 480 512 544 576 608 640 672
yVal =
18 19 20 21 22
zVal =
Columns 1 through 9
1.1717 1.1421 1.1358 1.2124 1.1721 1.1840 1.1809 1.1399 1.1708
1.1286 1.2183 1.1654 1.1675 1.1810 1.1745 1.2100 1.2284 1.2096
1.2132 1.3057 1.2616 1.1742 1.2639 1.2316 1.2039 1.2277 1.2367
1.2363 1.1987 1.2367 1.2171 1.2718 1.2040 1.2462 1.1802 1.2218
1.2230 1.2601 1.2411 1.2436 1.2635 1.2197 1.2300 1.2266 1.2368
Column 10
1.2357
1.2039
1.3010
1.2273
1.2336
我最初在matplotlib 1.2中遇到了这个问题。我认为他们可能已经在更高版本中修复了它,但即使使用u'1.4.x',它仍然会发生。部分问题来自matplotlib的“伪3D”绘图。Matplotlib不适用于三维打印,实际上也不进行三维渲染。如果确定一个多边形面位于另一个多边形面之后,则整个面将设置为不可见,而不仅仅是它的一部分。简单回答,尝试将曲面设置为部分透明(例如
alpha=0.5
),或使用3D打印库(例如Mayavi的mlab
界面:)。就我个人而言,如果你想在3D上做很多事情,我建议你选择后一种方式。