我正在尝试用plotly制作动态图。我想绘制已聚合的数据计数(使用 groupby)。 我想按颜色(甚至可能按列)对图进行分面。问题是我希望在每个条上显示值计数。使用直方图,我得到平滑的条形图,但我找不到如何显示计数:
使用条形图,我可以显示计数,但我没有得到平滑的条形图,并且计数不会出现在整个条形图上,而是显示在构成该条形图的每种情况下
这是我的条形图代码
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 :
带有数据示例的完整代码:
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/