繁体   English   中英

如何平滑 Plotly 3d 表面 plot?

[英]How to smooth Plotly 3d surface plot?

我正在使用 oceansdb 模块和 Plotly 在 Python 中生成地形 map。 然而,这个 map 显示了对地形的粗略解释,我想知道如何在点之间平滑 map?

这是我尝试过的代码:

import plotly.graph_objects as go
import oceansdb
import numpy as np 
from scipy.interpolate import griddata

Xa = np.linspace(29.005,29.405,200)
Ya = np.linspace(-93.6683,-93.2683,200)

db = oceansdb.ETOPO()
dcont = db['topography'].extract(lat=Xa, lon=Ya)
depth = dcont['height']

fig = go.Figure(data=[go.Surface(z=depth, x=Xa, y=Ya)])
fig.show()

我试过scipy.interpolate.griddata来平滑 plot,但 plot 没有任何变化。

我不认为插值是你想要的,因为如果你在嘈杂的点内进行插值,它仍然会很嘈杂。 scipy.ndimage库有一些很好的平滑算法(我展示的是一个简单的高斯平滑算法)。

import plotly.graph_objects as go
import oceansdb
import numpy as np 
import scipy.ndimage

Xa = np.linspace(29.005,29.405,200)
Ya = np.linspace(-93.6683,-93.2683,200)

db = oceansdb.ETOPO()
dcont = db['topography'].extract(lat=Xa, lon=Ya)
depth = dcont['height']

sigma = [4, 4]
print(sigma)
depthSmooth = scipy.ndimage.filters.gaussian_filter(depth, sigma)

fig = go.Figure(data=[go.Surface(z=depthSmooth, x=Xa, y=Ya)])
fig.show()

您可以更改sigma值以更改平滑程度(更大的sigma意味着更多平滑,列表为[sigmax, sigmay] )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM