5

我想制作一些数据的等高线图,但字段中的所有值都可能具有相同的值。这会导致 matplotlib 中的错误,这是有道理的,因为实际上没有要创建的轮廓。例如,如果你运行下面的代码,你会得到一个错误,但删除第二个定义,zi它会按预期运行。

如果它是一个统一的字段,我怎样才能为一些数据制作一个“等高线”图?我希望它看起来就像常规的等高线图(有一个填充了一些颜色的框并在侧面显示一个颜色条。颜色条可以是统一的颜色,或者仍然显示 15 种颜色的范围,我不不在乎)。

代码:

from numpy        import array
import matplotlib.pyplot as plt

xi = array([0., 0.5, 1.0])
yi = array([0., 0.5, 1.0])
zi = array([[0., 1.0, 2.0],
            [0., 1.0, 2.0],
            [0., 1.0, 2.0]])
zi = array([[1.0, 1.0, 1.0],
            [1.0, 1.0, 1.0],
            [1.0, 1.0, 1.0]])

CS = plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k')
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet)
plt.colorbar()
plt.show()
4

1 回答 1

10

好吧,contourf处理得很好,contour就是扼流圈。

为什么不这样做:

import numpy as np
import matplotlib.pyplot as plt

xi = np.array([0., 0.5, 1.0])
yi = np.array([0., 0.5, 1.0])
zi = np.ones((3,3))

try:
    CS = plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k')
except ValueError:
    pass
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet)

plt.colorbar()
plt.show()

这样,如果有一个统一的字段,您将获得一个填充的(默认为绿色)框,否则将获得一个带有线条的填充等高线图。

在此处输入图像描述

于 2011-04-06T20:42:36.397 回答