python - plotly 3D Topographical 3D Surface Plot with pandas dataframe
问题描述
我在 padas 数据框中有一个坐标点云
接下来,我想绘制一个绘图曲面图,但 Surface 方法需要 z 参数中的二维数组,我不知道如何构建它。
go.Figure(data=[go.Surface(z=z, x=x, y=y)])
解决方案
我认为您需要先对数据进行网格化。我根据您的数据创建了一个示例。
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()
您可以使用不同的网格划分方法(三次、线性、最近) https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.griddata.html
推荐阅读
- android - 从 Firebase 控制台向所有设备发送推送通知时出现问题
- python - 如何在 Windows 10 上安装支持 CUDA 的 pytorch 1.2.0?
- c# - EF Core 忽略 ModelMetadataType
- excel - 比较两个工作表并突出显示差异:运行时错误 457 - 此键已与此集合的元素相关联
- c - 函数只工作 1 次
- python - openpyxl - TypeError:“生成器”对象不可下标
- php - Symfony 5 和客户 github 包
- http - 如何在 Postman 正文请求中发送带有 html 标签的数据?
- rust - 我应该尽可能避免在 Rust 中使用 Rc 和 RefCell 吗?
- apache-kafka - 是否可以通过 kafkacat 修改或更新主题的消息?