[英]Is there a python 3d topographical plot that works with Pandas?
[英]plotly 3D Topographical 3D Surface Plot with pandas dataframe
我在 padas 中有一个坐标点云 dataframe
接下来,我想要 plot 一个平面图,但 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
go.Surface
不支持直接使用DataFrames
作为参数,这绝对是一个糟糕的设计。 假设您交换了x
和y
,例如: x=df.index, y=df.columns, z=df.values
。 如果您不仔细检查,您将不会注意到您的 x 轴数据没有完全显示。 那是因为你颠倒了x
和y
,这给了你错误的结果!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.