Plotly: панорамирование трехмерной фигуры программно в ноутбуке Jupyter - PullRequest
1 голос
/ 25 апреля 2020

Я не могу понять, как панорамировать мое изображение Plotly, используя код.

Я запускаю следующий код

# Creating the plot

import plotly.graph_objects as go

surface = go.Surface(x=AddOnMesh, y=CMesh, z=Matrix)
data = [surface]

layout = go.Layout(
    title='Depiction of the SA-CCR multiplier function',
    scene=dict(
        xaxis=dict(
            gridcolor='rgb(255, 255, 255)',
            zerolinecolor='rgb(255, 255, 255)',
            showbackground=True,
            backgroundcolor='rgb(230, 230,230)',
            autorange='reversed'

        ),
        yaxis=dict(
            gridcolor='rgb(255, 255, 255)',
            zerolinecolor='rgb(255, 255, 255)',
            showbackground=True,
            backgroundcolor='rgb(230, 230,230)'
        ),
        zaxis=dict(
            gridcolor='rgb(255, 255, 255)',
            zerolinecolor='rgb(255, 255, 255)',
            showbackground=True,
            backgroundcolor='rgb(230, 230,230)'
        ),
        xaxis_title = 'AddOn / V',
        yaxis_title = 'C / V',
        zaxis_title = 'Multiplier',
    )
)

fig = go.Figure(data=data, layout=layout)
fig.show()

Это дает следующее изображение:

enter image description here

Как видите, дно отрезано. Повернув вручную немного вверх, я могу сделать так, чтобы это выглядело так:

enter image description here

Как можно добиться того же результата с кодом, например, изменив компоновку Я использую. Ручная настройка не возможна, так как я непосредственно преобразую изображение с помощью fig.to_image() на следующем шаге.

Ответы [ 2 ]

2 голосов
/ 27 апреля 2020

Вы можете свободно изменять положение камеры , редактируя параметр глаза в:

camera = dict(eye=dict(x=2, y=2, z=0.1))

fig.update_layout(scene_camera=camera)

Вы можете понизить точку обзора, установив z на меньшее значение. Th ie цифры ниже сравнивают z=1.5 с z=0.1.

enter image description here

enter image description here

Я надеюсь, что это хорошо с вашим набором данных. Если нет, то предоставьте образец ваших данных, и я посмотрю еще раз.

1 голос
/ 28 апреля 2020

В моем случае, параметр center управления 3D-камерой дал то, что я хотел.

camera = dict(
    center=dict(x=0, y=0, z=-0.1)
    )
fig = go.Figure(data=data, layout=layout)
fig.update_layout(scene_camera=camera)
fig.show()
...