首页 > 解决方案 > plotly 3D Topographical 3D Surface Plot with pandas dataframe

问题描述

我在 padas 数据框中有一个坐标点云

数据框

接下来,我想绘制一个绘图曲面图,但 Surface 方法需要 z 参数中的二维数组,我不知道如何构建它。

go.Figure(data=[go.Surface(z=z, x=x, y=y)])

标签: pythonplotly

解决方案


我认为您需要先对数据进行网格化。我根据您的数据创建了一个示例。

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

#Read data
data = pd.read_csv('data.txt', header=0, delimiter='\t')

#Create meshgrid for x,y
xi = np.linspace(min(data['x']), max(data['x']), num=100)
yi = np.linspace(min(data['y']), max(data['y']), num=100)

x_grid, y_grid = np.meshgrid(xi,yi)

#Grid data
z_grid = griddata((data['x'],data['y']),data['z'],(x_grid,y_grid),method='cubic')

# Plotly 3D Surface
fig = go.Figure(go.Surface(x=x_grid,y=y_grid,z=z_grid,
                           colorscale='viridis',showlegend=True)
)

fig.show()

来自示例数据的 3D 表面

您可以使用不同的网格划分方法(三次、线性、最近) https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.griddata.html


推荐阅读