如何平滑 Plotly 3d 曲面图?
How to smooth Plotly 3d surface plot?
我正在使用 oceansdb 模块和 Plotly 在 Python 中生成地形图。然而,这张地图显示了对地形的粗略解释,我想知道如何在点之间平滑地图?
这是我试过的代码:
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
平滑情节,但情节没有任何变化。
我不认为插值是你想要的,因为如果你在有噪声的点内进行插值,它仍然会有噪声。 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]
)。
我正在使用 oceansdb 模块和 Plotly 在 Python 中生成地形图。然而,这张地图显示了对地形的粗略解释,我想知道如何在点之间平滑地图?
这是我试过的代码:
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
平滑情节,但情节没有任何变化。
我不认为插值是你想要的,因为如果你在有噪声的点内进行插值,它仍然会有噪声。 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]
)。