2 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊
我認(rèn)為您需要先對(duì)數(shù)據(jù)進(jìn)行網(wǎng)格化。我根據(jù)您的數(shù)據(jù)創(chuàng)建了一個(gè)示例。
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()
來(lái)自示例數(shù)據(jù)的 3D 表面
您可以使用不同的網(wǎng)格劃分方法(三次、線(xiàn)性、最近) https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.griddata.html

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
這絕對(duì)是一個(gè)糟糕的設(shè)計(jì),go.Surface
不支持直接使用DataFrames
as 參數(shù)。想象一下,您交換了x
和y
,例如:x=df.index, y=df.columns, z=df.values
. 如果您不仔細(xì)檢查,您將不會(huì)注意到您的 x 軸數(shù)據(jù)沒(méi)有完全顯示。那是因?yàn)槟泐嵉沽?code>xand y
,這給了你錯(cuò)誤的結(jié)果!
添加回答
舉報(bào)