【发布时间】:2019-01-19 19:49:25
【问题描述】:
我正在尝试使用温度在 Plotly 中制作条形图,但希望零线在华氏温度下以 32 为中心而不是 0(这在摄氏模式下很好)。这样,低于 32F 的值会使条形下降而不是上升。
附上一个预期行为示例(之前在 HighCharts 中而不是 Plotly 中完成)
y0、dy 或 zeroline 似乎都不允许这种行为。
【问题讨论】:
标签: plotly plotly-dash
我正在尝试使用温度在 Plotly 中制作条形图,但希望零线在华氏温度下以 32 为中心而不是 0(这在摄氏模式下很好)。这样,低于 32F 的值会使条形下降而不是上升。
附上一个预期行为示例(之前在 HighCharts 中而不是 Plotly 中完成)
y0、dy 或 zeroline 似乎都不允许这种行为。
【问题讨论】:
标签: plotly plotly-dash
您可能正在寻找的参数具有直观的名称base。
base(数字或分类坐标字符串)
设置绘制条形底座的位置(以位置轴为单位)。在“stack”或“relative”条形模式下,设置为“base”的迹线将被排除并以“overlay”模式绘制。
您可以在此处使用列表或仅使用单个值。
至少现在这些条已经移动了。接下来我们需要将yaxis的zeroline设置为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)
【讨论】: