【发布时间】:2018-01-29 02:16:35
【问题描述】:
我有一个二维点网格,其中每个点都有一个对应的标签,在[0.0, 5.0] 范围内。现在我想做以下事情:
绘制网格中的所有点并根据它们的标签为它们着色。
但是,我不想使用scatter plot 来执行此操作。我尝试使用 contourf 和 pcolormesh 绘图:
import matplotlib.pyplot as plt
np.random.seed(1234)
x = np.linspace(-1.0, 1.0, num=5)
xx, yy = np.meshgrid(x, x)
z = np.random.randint(low=0, high=6, size=xx.shape)
levels = np.arange(0, 6)
fig, axes = plt.subplots(nrows=2, ncols=2)
axes[0, 0].contourf(xx, yy, z)
axes[0, 1].contour(xx, yy, z, colors='k')
axes[1, 0].scatter(xx, yy, marker='.', c=z)
axes[1, 1].pcolormesh(xx, yy, z)
plt.show()
我应该如何指定contourf 图的级别,以便获得分隔标签的等高线。 (类似于 pcolormesh 图)
此外,我怎样才能固定每个标签的颜色,即标签 4 应该始终为红色?
编辑:这是一个 contourf 图的示例,它产生了太多的彩色区域:
实际上,网格中只有两个标签。但是,在这两个区域之间的边界处,还绘制了几条额外的等高线。
对于上面的示例,应该有一条等高线分隔两个区域(青色和蓝色)
感谢您的帮助。
【问题讨论】:
-
我不明白这个问题。使用当前代码,您可以在轮廓图中将标签作为彩色区域。这在多大程度上不是您想要的,实现您需要的问题是什么?
-
也许您正在寻找
plt.clabel?这里是an example。
标签: python numpy matplotlib contour