Как создать 3D точечную диаграмму

#python #plotly #scatter3d

#python #plotly #scatter3d

Вопрос:

Профессионалы в Plotly, помогите мне, пожалуйста. У меня есть матрица с высотами. Мне нужно создать аналог go.Поверхность с использованием Scatter. Если это невозможно, то отметьте точки (вершины) на диаграмме поверхности. Все это необходимо для лучшего определения вершин. Спасибо.

 import plotly.graph_objects as go
import pandas as pd
import numpy as np
z_data = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/api_docs/mt_bruno_elevation.csv')
fig = go.Figure()
fig.add_trace(go.Surface(z=z_data.values))
#fig.add_trace(go.Scatter3d(z=z_data.values))
fig.update_layout(title='Mt Bruno Elevation', autosize=False,
              width=500, height=500,
              margin=dict(l=65, r=50, b=65, t=90))

fig.show()
  

Похоже на это

введите описание изображения здесь

Ответ №1:

У меня нет большого опыта работы с 3D-графиками. Я создал диаграмму рассеяния 3D из ваших данных, я назначил столбцы фреймов данных оси y, назначил строки фреймов данных оси x, преобразовал ось z в одномерный список элементов фрейма данных и нарисовал его. Соответствует ли это цели вопроса?

 import plotly.graph_objects as go
import pandas as pd
import numpy as np

z_data = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/api_docs/mt_bruno_elevation.csv',index_col=0)

x_tmp = z_data.index.tolist()
xx = [[t]*24 for t in x_tmp]
xx = sum(xx, [])

y_tmp = z_data.columns.tolist()
yy = [int(t) for t in y_tmp]
yy = yy * 25

fig = go.Figure()

fig.add_trace(go.Scatter3d(x=xx, y=yy,
                           z=sum(z_data.values.tolist(),[]),
                           mode='markers',
                          marker=dict(size=2)))
#fig.add_trace(go.Scatter3d(z=z_data.values))

fig.update_layout(title='Mt Bruno Elevation', autosize=True,
              width=800, height=800,
              margin=dict(l=65, r=50, b=65, t=90))

fig.show()
  

введите описание изображения здесь