python - 如何用 python 绘制 GEBCO 水深数据?
问题描述
我正在尝试绘制测深数据(来自GEBCO 数据库)。我正在尝试使用 seaborn python 绘制纬度、经度和海拔高度。数据采用 netCDF 格式。我设法使用 xarray 正确加载数据。这是代码片段。
from netCDF4 import Dataset
import xarray as xr
ds = Dataset('gebco_2019.nc')
lats = ds.variables['lat'][:]
lons = ds.variables['lon'][:]
tid = ds.variables['tid'][:]
import plotly.graph_objects as go
fig = go.Figure(go.Surface(
contours = {
"x": {"show": True, "size": 0.04, "color":"white"},
"z": {"show": True, "size": 0.05}
},
x = ds.variables['lat'],
y = ds.variables['lon'],
z = [
ds.variables['tid']
]))
fig.show()
尝试使用 python 绘制 3D 绘图,但出现此错误。
arrays must all be same length
我设法得到了二维图。
我使用了另一种方法来检查 netcdf 文件是否正常(转换为csv)。我已经使用 plotly 进行了绘制。
import plotly.graph_objects as go
import pandas as pd
import numpy as np
# Read data from a csv
z_data = pd.read_csv('bathy_bedford.csv')
z = z_data.values
sh_0, sh_1 = z.shape
x, y = np.linspace(44.66875, 44.74791667, sh_0), np.linspace(-63.69791667, -63.52708333, sh_1)
fig = go.Figure(data=[go.Surface(z=z, x=x, y=y)])
fig.update_traces(contours_z=dict(show=True, usecolormap=True,
highlightcolor="limegreen", project_z=True))
fig.update_layout(title='Bedford Basin Elevation',xaxis_title="Latitude",
yaxis_title="Longitude",autosize=False,
width=900, height=900,
margin=dict(l=65, r=50, b=65, t=90))
fig.update_layout(scene = dict(
xaxis_title='Latitude',
yaxis_title='Longitude',
zaxis_title='Elevation'),
margin=dict(r=20, b=10, l=10, t=10))
# fig.update_layout(color='Elevation')
fig.update_layout(coloraxis_colorbar=dict(
title="Elevation",
thicknessmode="pixels", thickness=50,
lenmode="pixels", len=200,
yanchor="top", y=1,
ticks="outside", ticksuffix="",
dtick=5
))
fig.show()
解决方案
推荐阅读
- javascript - 无法将复选框值传递给数据库
- mysql - MySql 复合外键 ON DELETE 设置 null
- nginx - 使用 HTTPS Web 服务在 Ingress 上获取 ERR_TOO_MANY_REDIRECTS
- osgi - 向 OpenDaylight 应用程序添加功能的过程
- splunk - 记录每天最早登录时间
- javascript - 保存私人数据;来自 Await Fetch 的非预期响应
- javascript - 如何使用 map 函数像数组一样使用我的对象
- node.js - 为什么 mocha 突然开始输出详细日志?
- vue.js - 如何在 Vue 测试中正确访问存储操作?
- javascript - Discord.js - 你如何记录角色变化?