首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >停止等高线插值值

停止等高线插值值
EN

Stack Overflow用户
提问于 2018-03-07 12:34:58
回答 3查看 7.5K关注 0票数 3

我试图用contourf (matplotlib)在基地图中绘制一些2D值。

然而,在默认情况下,contourf插值中间值并给出更平滑的数据图像。

有没有办法使等高线停止在值之间进行内插?

我尝试添加关键字参数内插=‘最近’,但contourf不使用它。其他选项是使用imshow,但是有一些contourf功能不适用于imshow。

我使用python 3.6.3和matplotlib 2.1.2

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-17 15:15:31

尝试“pcolormesh”,您可以使用它来绘制2D值,而不需要在它们之间进行插值。

“‘pcolormesh”(来自matplotlib文档):

创建一个具有非规则矩形网格的伪彩色图。

代码示例:

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
plt.pcolormesh(data)
plt.show()

在这里,您可以看到如何以类似于“contourf”的方式使用“pcolormesh”(还有一个示例图):

levels.html

票数 5
EN

Stack Overflow用户

发布于 2019-12-04 16:58:15

我在绘制不确定的类决策边界(颜色)(将颜色混合为白色)时,也遇到了同样的问题。在两个边界之间,由于插值,我有其他类的颜色。这些界限是错误的。看看从蓝色到红色的过渡:

我一次只画了一个班就解决了这个问题。这可以用蒙面阵列来完成

代码语言:javascript
运行
复制
# C contains classes 0, 1, 2 as mesh
# CU contains classes with uncertainty, CU = 2 * C + U, where 0 <= U <= 1
# xx and yy are the mesh variables
for cl in np.unique(C):   # iterate over red, green, blue classes
    mask = C != cl
    xx_ma = np.ma.MaskedArray(xx, mask)
    yy_ma = np.ma.MaskedArray(yy, mask)
    CU_ma = np.ma.MaskedArray(CU, mask)
    cnt = plt.contourf(xx_ma, yy_ma, CU_ma, vmin=0, vmax=5,
                       cmap=cmap, levels=len(np.unique(CU)))

其结果是:

使用波洛梅什时,不需要单独绘制类,但数据必须采用不同的格式。基本上,您需要一个xy网格表示角(网格),另一个xy网格用于中心(值):

代码语言:javascript
运行
复制
(X[i+1, j], Y[i+1, j])          (X[i+1, j+1], Y[i+1, j+1])
                      +--------+
                      | C[i,j] |
                      +--------+
    (X[i, j], Y[i, j])          (X[i, j+1], Y[i, j+1]),

结果如下(现在有精确的拐角):

票数 2
EN

Stack Overflow用户

发布于 2018-03-08 19:33:34

鉴于问题并没有得到更新,以澄清实际问题,我只会回答问题的原样:

不,contour不插值是不可能的,因为等高线图的整个概念就是插值这些值。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49152116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档