为了账号安全,请及时绑定邮箱和手机立即绑定

plotly 3D Topographical 3D Surface Plot with

plotly 3D Topographical 3D Surface Plot with

qq_遁去的一_1 2022-07-19 10:59:44
我在 padas 数据框中有一个坐标点云接下来,我想绘制一个绘图曲面图,但 Surface 方法需要 z 参数中的二维数组,我不知道如何构建它。go.Figure(data=[go.Surface(z=z, x=x, y=y)])
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

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


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


查看完整回答
反对 回复 2022-07-19
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

这绝对是一个糟糕的设计,go.Surface不支持直接使用DataFramesas 参数。想象一下,您交换了xy,例如:x=df.index, y=df.columns, z=df.values. 如果您不仔细检查,您将不会注意到您的 x 轴数据没有完全显示。那是因为你颠倒了xand y,这给了你错误的结果!



查看完整回答
反对 回复 2022-07-19
  • 2 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号