如何在绘图快速条形图中添加一条线

Posted

技术标签:

【中文标题】如何在绘图快速条形图中添加一条线【英文标题】:How to add a line to a plotly express bar chart 【发布时间】:2022-01-07 10:00:45 【问题描述】:

我正在尝试在plotly 的条形图上添加一条非常简单的线,并且正在为此而努力。我的数据框包含一列 bins 和另一列 returnsdata,可以在这里复制:

'bins': 0: '(-23.077, 25.877]', 1: '(25.877, 34.666]', 2: '(34.666, 42.552]', 3: '(42.552, 46.044]', 4: '(46.044, 49.302]', 5: '(49.302, 52.746]', 6: '(52.746, 57.075]', 7: '(57.075, 62.349]', 8: '(62.349, 69.171]', 9: '(69.171, 90.975]', 'returns': 0: 0.39754, 1: 0.6817, 2: -0.1918399999999998, 3: -0.44406, 4: -0.6611199999999998, 5: -0.0742857142857142, 6: 0.25304, 7: 0.4166, 8: 0.97648, 9: 0.0539999999999999

我已经使用以下代码创建了一个绘图条形图:

fig = px.bar(dfs, x='bins', y='returns')
fig.show()

我想在条形图上添加一条代表基准分数的恒定线,并查看了以下内容:Plotly: How to add trendline to a bar chart?

这些方法似乎被贬低了,我似乎找不到任何方法来做到这一点。基准列表是这样的:

[0.14080542857142858, 0.14080542857142858, 0.14080542857142858, 0.14080542857142858, 0.14080542857142858, 0.14080542857142858, 0.14080542857142858, 0.14080542857142858, 0.14080542857142858, 0.14080542857142858]

我希望它看起来像这样(这条线应该是直的,为糟糕的油漆工作编辑道歉)

有人知道怎么做吗?

【问题讨论】:

【参考方案1】:

我会简单地使用:

fig.add_traces(go.Scatter(x= dfs.bins, y=dfs.benchmark, mode = 'lines'))

情节

完整代码:

import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
dfs = pd.DataFrame('bins': 0: '(-23.077, 25.877]', 1: '(25.877, 34.666]', 2: '(34.666, 42.552]', 3: '(42.552, 46.044]', 4: '(46.044, 49.302]', 5: '(49.302, 52.746]', 6: '(52.746, 57.075]', 7: '(57.075, 62.349]', 8: '(62.349, 69.171]', 9: '(69.171, 90.975]', 'returns': 0: 0.39754, 1: 0.6817, 2: -0.1918399999999998, 3: -0.44406, 4: -0.6611199999999998, 5: -0.0742857142857142, 6: 0.25304, 7: 0.4166, 8: 0.97648, 9: 0.0539999999999999)
dfs['benchmark'] = [0.14080542857142858, 0.14080542857142858, 0.14080542857142858, 0.14080542857142858, 0.14080542857142858, 0.14080542857142858, 0.14080542857142858, 0.14080542857142858, 0.14080542857142858, 0.14080542857142858]

fig = px.bar(dfs, x='bins', y='returns')
fig.add_traces(go.Scatter(x= dfs.bins, y=dfs.benchmark, mode = 'lines'))
fig.show()

【讨论】:

【参考方案2】:

您可以使用 Plotly 的horizontal and vertical shapes 来添加水平线:

fig.add_hline(y=0.14080542857142858)

【讨论】:

以上是关于如何在绘图快速条形图中添加一条线的主要内容,如果未能解决你的问题,请参考以下文章

在 pandas df 的时间序列图中添加一条垂直线

反转图例顺序而不更改绘图快速条形图中的条形顺序

如何在箱线图中添加一条线?

在ggplot2中的散点图中添加一条水平线

如何添加一条最适合散点图的线

MATLAB 中加一条直线