Создание 3D-графика поверхности в Plotly

#python #plot #plotly

Вопрос:

Я хочу создать 3D-график поверхности в Plotly, считав данные из внешнего файла. Ниже приведен код, который я использую:

     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)
 

Приведенный выше код не создает никакого графика поверхности. Какие изменения необходимо внести для создания графика поверхности?

Ответ №1:

Из ссылки на рисунок plotly:

Задаются данные, описывающие координаты поверхности z . Данные в z нем должны представлять собой 2D-список. Координаты в x и y могут быть либо одномерными списками, либо {двумерными массивами}

У меня есть пример набора данных. Он содержит три столбца (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()
 

Справочная страница: https://plotly.com/python/reference/surface /

рисунок