python - Plotly:如何在直方图上显示单个值?

标签 python plotly

我正在尝试用plotly制作动态图。我想绘制已聚合的数据计数(使用 groupby)。 我想按颜色(甚至可能按列)对图进行分面。问题是我希望在每个条上显示值计数。使用直方图,我得到平滑的条形图,但我找不到如何显示计数: enter image description here

使用条形图,我可以显示计数,但我没有得到平滑的条形图,并且计数不会出现在整个条形图上,而是显示在构成该条形图的每种情况下 enter image description here

这是我的条形图代码

val = pd.DataFrame(data2.groupby(["program", "gender"])["experience"].value_counts())
px.bar(x=val.index.get_level_values(0), y=val, color=val.index.get_level_values(1), barmode="group", text=val)

直方图基本相同。

感谢您的帮助!

最佳答案

px.histogram好像没有text属性。因此,如果您愿意在生成绘图之前进行任何分箱,我会使用 px.Bar 。通常,您可以使用 px.Bar(... text = <something>) 将文本应用于条形图。 。但这会给出您用文本描述的数据所有子类别的结果。但既然我们知道px.Bar按照源的组织顺序添加数据和注释,我们可以简单地将文本更新到使用fig.data[-1].text = sums应用的最后子类别。剩下的唯一挑战是修改一些数据以检索正确的总和。

plotly :

enter image description here

带有数据示例的完整代码:

import plotly.graph_objects as go
import plotly.express as px
import pandas as pd

# data
df = pd.DataFrame({'x':['a', 'b', 'c', 'd'],
                       'y1':[1, 4, 9, 16],
                       'y2':[1, 4, 9, 16],
                       'y3':[6, 8, 4.5, 8]})
df = df.set_index('x')

# calculations
# column sums for transposed dataframe
sums= []
for col in df.T:
    sums.append(df.T[col].sum())

# change dataframe format from wide to long for input to plotly express
df = df.reset_index()
df = pd.melt(df, id_vars = ['x'], value_vars = df.columns[1:])

fig = px.bar(df, x='x', y='value', color='variable')
fig.data[-1].text = sums

fig.update_traces(textposition='inside')
fig.show()

关于python - Plotly:如何在直方图上显示单个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61986676/

相关文章:

python - 删除numpy数组中的行

javascript - Plotly.js - 在值之间设置刻度

python - plotly dash - 使用 plotly 生成图像,在本地保护它并使用 plotly dash 显示它

r - 使用ggplotly时如何选择要在工具提示中显示的变量?

python - 如何更改三元图的 Axis 刻度顺序?

python - 命令 "pipenv run"昨天工作正常。为什么我今天收到 AttributeError?

python - 在 ROS 之外使用 ROS 消息类

python - pipenv 仅使用站点包

python - 即使在连接丢失或 SSH 连接终止后,如何让 python 脚本(abc.py)继续在 AWS 上执行?

python - 如何在 Plotly 中的特定条形之间添加间隙