【问题标题】:How to set non-zero zeroline in Plotly如何在 Plotly 中设置非零零线
【发布时间】:2019-01-19 19:49:25
【问题描述】:

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

附上一个预期行为示例(之前在 HighCharts 中而不是 Plotly 中完成)

y0、dy 或 zeroline 似乎都不允许这种行为。

【问题讨论】:

    标签: plotly plotly-dash


    【解决方案1】:

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

    base(数字或分类坐标字符串)

    设置绘制条形底座的位置(以位置轴为单位)。在“stack”或“relative”条形模式下,设置为“base”的迹线将被排除并以“overlay”模式绘制。

    您可以在此处使用列表或仅使用单个值。

    至少现在这些条已经移动了。接下来我们需要将yaxiszeroline设置为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)
    

    【讨论】:

    • 完美修复。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多