Create a 3D surface plot in Plotly

Aim*_*Aim 3 python plot plotly

I want to create a 3D surface plot in Plotly by reading the data from an external file. Following is the code I am using:

    import numpy as np
    import plotly.graph_objects as go 
    import plotly.express as px
    
    
    data = np.genfromtxt('values.dat', dtype=float)
    
    # The shape of X, Y and Z is (10,1)
    X = data[:,0:1] 
    Y = data[:,1:2]
    Z = data[:,2:3]
    
    fig = go.Surface(x=X, y=Y, z=Z, name='Surface plot', colorscale=px.colors.sequential.Plotly3)
    plot(fig)
Run Code Online (Sandbox Code Playgroud)

The above code does not produce any surface plot. What changes has to be made to create a surface plot?

小智 6

来自绘图参考:

描述表面坐标的数据设置在 中z。输入的数据z应该是一个二维列表。中的坐标xy可以是一维列表或{二维数组}

我有一个示例数据集。它包含三列(x、y、z)。

import plotly.graph_objects as go
import pandas as pd
import numpy as np
from scipy.interpolate import griddata


df = pd.read_csv('./test_data.csv')

x = np.array(df.lon)
y = np.array(df.lat)
z = np.array(df.value)


xi = np.linspace(x.min(), x.max(), 100)
yi = np.linspace(y.min(), y.max(), 100)

X,Y = np.meshgrid(xi,yi)

Z = griddata((x,y),z,(X,Y), method='cubic')



fig = go.Figure(go.Surface(x=xi,y=yi,z=Z))
fig.show()
Run Code Online (Sandbox Code Playgroud)

参考页面:https ://plotly.com/python/reference/surface/

数字

  • 感谢你的回答!我正在处理一些 3D 点,特别是球体的点,当我分散它们时,它们看起来很好,但是当我尝试遵循插值方法时,表面似乎严重不连续。有什么想法为什么会发生这种情况或如何解决?谢谢! (3认同)