Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib.pyplot contourf函数在打印常规数据时引入孔或间隙_Python_Matplotlib_Plot_Ipython - Fatal编程技术网

Python matplotlib.pyplot contourf函数在打印常规数据时引入孔或间隙

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

我正在尝试使用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(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上做很多事情,我建议你选择后一种方式。