Как изменить ориентацию аннотации в сюжете? - PullRequest
1 голос
/ 27 марта 2019

Скажите, у меня есть следующий рисунок:

import numpy as np
import plotly.graph_objs as go

z=np.random.randint(1000, 11000, size=20)
trace=dict(type='scatter',
          x=3+np.random.rand(20),
          y=-2+3*np.random.rand(20),
          mode='markers',
          marker=dict(color= z, 
                      colorscale='RdBu', size=14, colorbar=dict(thickness=20)))

axis_style=dict(zeroline=False, showline=True, mirror=True)
layout=dict(width=550, height=500,
            xaxis=axis_style,
            yaxis=axis_style,
            hovermode='closest',

           )
fig=go.FigureWidget(data=[trace], layout=layout)
fig

enter image description here

Теперь скажите, что я хочу, чтобы цветная панель имела заголовок. Поскольку в настоящее время графически нет прямого способа сделать это, если я правильно понимаю, я делаю это через annotations, как показано здесь :

layout.update(
    annotations=[dict(
          x=1.12,
          y=1.05,
          align="right",
          valign="top",
          text='Colorbar Title',
          showarrow=False,
          xref="paper",
          yref="paper",
          xanchor="center",
          yanchor="top"
        )
    ]
) 

Как мы видим, появляется заголовок цветовой полосы:

fig=go.FigureWidget(data=[trace], layout=layout)
fig

enter image description here

Тем не менее, теперь скажем, что я хочу разместить заголовок цветовой полосы вдоль цветовой полосы следующим образом:

enter image description here

Как мне это сделать?

1 Ответ

3 голосов
/ 27 марта 2019

Параметр textangle сделайте это за вас. Пример из сюжетных документов. Установив textangle=-90 поверните аннотацию как хотите.

Код:

# import necessaries libraries
import numpy as np
import plotly.offline as py
import plotly.graph_objs as go

z = np.random.randint(1000, 11000, size=20)
# Create a trace
trace = dict(type='scatter',
             x=3+np.random.rand(20),
             y=-2+3*np.random.rand(20),
             mode='markers',
             marker=dict(color=z, colorscale='RdBu',
                         size=14, colorbar=dict(thickness=20)))
# Define axis_style
axis_style = dict(zeroline=False, showline=True, mirror=True)
# Specify layout style
layout = dict(width=550, height=500,
              xaxis=axis_style,
              yaxis=axis_style,
              hovermode='closest',
              )
# Update layout with annotation
layout.update(
    annotations=[dict(
          # Don't specify y position,because yanchor="middle" do it for you
          x=1.22,
          align="right",
          valign="top",
          text='Colorbar Title',
          showarrow=False,
          xref="paper",
          yref="paper",
          xanchor="right",
          yanchor="middle",
          # Parameter textangle allow you to rotate annotation how you want
          textangle=-90
        )
    ]
)
# Create FigureWidget
fig = go.FigureWidget(data=[trace], layout=layout)
# Plot fig
py.plot(fig)

Выход:

Plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...