首页 > 解决方案 > 如何用 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()

这是输出图像: 在此处输入图像描述

标签: pythonnumpymatplotlibplotly

解决方案


推荐阅读