Matplotlib - 单值等高线图

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()
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()
这样,如果存在均匀场,则会得到一个填充的(默认为绿色)框,否则将得到一个带有线条的填充轮廓图。

在此输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接