如何在Plotly中设置非零零线

Ale*_*ett 4 plotly plotly-dash

我正在尝试使用温度在Plotly中制作条形图,但希望在华氏温度下零线位于32的中心,而不是在0(在摄氏模式下很好)。这样,低于32F的值使条形下降而不是上升。

随附了预期行为的示例(之前在HighCharts中完成,而不是在Plotly中完成)在此处输入图片说明

y0,dy或零线似乎都不允许这种行为。

Max*_*ers 5

您可能正在寻找的参数具有直观的名称base

基本(数字或分类坐标字符串)

设置绘制钢筋基准的位置(以位置轴为单位)。在“堆栈”或“相对”条状模式下,设置为“基本”的迹线将被排除,而是以“覆盖”模式绘制。

您可以在此处使用列表,也可以仅使用一个值。

至少小节现在已移动。接下来,我们需要设置zerolineyaxis,以False隐藏它,最后通过添加我们自己的zeroline 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)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明