1

我正在尝试使用 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')

结果可以在这里看到:

http://nbviewer.ipython.org/url/www.alexbaldwin.org.uk/pynotebooks/OD%2520Appendix%2520HM%2520Noise%2520Aperture%2520SurfBug%2520MWE%25202.ipynb

正在绘制的数据是从 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' 它仍然会发生。

4

0 回答 0