为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决 Matplotlib 中的锯齿状网格?

如何解决 Matplotlib 中的锯齿状网格?

慕标琳琳 2023-02-07 13:49:57
我有一个问题需要你的帮助。现在我有一个网格数据。它由多个不同的值组成。结构如下图所示。 实际图形事实上,我想要得到的图形应该是由平滑的填充曲面组成的。如下所示。 我想要的图形我提供了一个特定的数据集。请参考。 样本数据集。这个数据集是“surfer”软件定义的asc格式。您可以使用“pykrige”来阅读。使用以下代码进行渲染import sysimport matplotlib.pyplot as pltimport pykrige.kriging_tools as ktdef func(cmd):       ascFile = cmd[1]   ascFileContent = kt.read_asc_grid(ascFile)   Z = ascFileContent[0]   X = ascFileContent[1]   Y = ascFileContent[2]   print(Z)   fig = plt.figure()       ax = fig.add_subplot()   contour = plt.contourf(X,Y,Z)   #contour = plt.pcolormesh(X,Y,Z)   plt.show()if __name__ == "__main__":   cmd=["CONTOUR_KYZQ"]   #gridFile   cmd.append(r"D:\out.grd")   func(cmd)我使用了各种方法,例如 pcolormesh、contourf。生成的图形呈锯齿状。我怎么解决这个问题。请帮我。多谢。
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

用于scipy.ndimage.zoom平滑图像。这是我对数字 5 使用平滑,但您可以尝试其他数字。


import matplotlib.pyplot as plt

import pykrige.kriging_tools as kt

import scipy.ndimage


ascFileContent = kt.read_asc_grid("out.grd")

Z = ascFileContent[0]

X = ascFileContent[1]

Y = ascFileContent[2]


fig = plt.figure()    

plt.rcParams['figure.figsize'] = [20, 14]



new_z = scipy.ndimage.zoom(Z, 5)


contour = plt.contourf(np.linspace(X[0], X[-1], len(X) * 5), 

                       np.linspace(Y[0], Y[-1], len(Y) * 5), 

                       new_z)



plt.show()

如果您放大特定区域(如此代码片段所示),您会注意到您的数据本质上是“方格的”。所以即使平滑了,也有一些区域看起来非常像网格(见下文)。


ascFileContent = kt.read_asc_grid("out.grd")

Z = ascFileContent[0]

X = ascFileContent[1]

Y = ascFileContent[2]


fig = plt.figure()    

plt.rcParams['figure.figsize'] = [20, 14]

ZOOM_FACTOR = 5


new_z = scipy.ndimage.zoom(Z, ZOOM_FACTOR)


contour = plt.contourf(np.linspace(X[0], X[-1], len(X) * ZOOM_FACTOR), 

                       np.linspace(Y[0], Y[-1], len(Y) * ZOOM_FACTOR), 

                       new_z)


plt.xlim((106, 107))

plt.ylim((24, 26))


plt.show()

//img1.sycdn.imooc.com//63e1e6be0001229b11770793.jpg

查看完整回答
反对 回复 2023-02-07
  • 1 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号