Как установить ненулевой зеролин в Plotly - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь сделать гистограмму в Plotly, используя температуру, но хочу, чтобы зерин был центрирован около 32, когда в градусах Фаренгейта, а не в 0 (что хорошо в режиме Цельсия). Таким образом, при значениях ниже 32F столбцы будут идти вниз, а не вверх.

Прилагается пример предполагаемого поведения (которое было сделано ранее в HighCharts вместо Plotly) enter image description here

Ни y0, ни dy, ни zeroline, по-видимому, не допускают такого поведения.

1 Ответ

0 голосов
/ 20 января 2019

Параметр, который вы, вероятно, ищете, имеет интуитивно понятное имя base.

base (число или категориальная строка координат)

Устанавливает, гдестержень основания рисуется (в позициях по осям).В «стековом» или «относительном» бармоде трассы, которые устанавливают «базовый», будут исключены и прорисованы в режиме «наложения».

Вы можете использовать здесь список или только одно значение.

По крайней мере, бары теперь смещены.Затем нам нужно установить zeroline из yaxis в False, чтобы скрыть его и, наконец, добавить наш собственный зеролин через shapes.

import plotly
plotly.offline.init_notebook_mode()

val_celcius = [-50, 0, 50, 100]
val_fahrenheit = [c * 1.8 for c in val_celcius] # we don't need +32 here because of the shift by `base`

x = [i for i, _ in enumerate(val_celcius)]

data = plotly.graph_objs.Bar(x=[0, 1, 2, 3], 
                             y=val_fahrenheit,
                             text=['{}°C'.format(c) for c in val_celcius],
                             base=32)
layout = plotly.graph_objs.Layout(yaxis={'zeroline': False},
                                  shapes=[{'type': 'line', 
                                           'x0': 0, 'x1': 1, 'xref': 'paper',
                                           'y0': 32, 'y1': 32, 'yref': 'y'}])
fig = plotly.graph_objs.Figure(data=[data], layout=layout)
plotly.offline.iplot(fig)

enter image description here

...