2 回答

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

TA貢獻1770條經驗 獲得超3個贊
這絕對是一個糟糕的設計,go.Surface
不支持直接使用DataFrames
as 參數。想象一下,您交換了x
和y
,例如:x=df.index, y=df.columns, z=df.values
. 如果您不仔細檢查,您將不會注意到您的 x 軸數據沒有完全顯示。那是因為你顛倒了x
and y
,這給了你錯誤的結果!
添加回答
舉報