Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Plotly:如何在直方图上显示单个值?_Python_Plotly - Fatal编程技术网

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

Python Plotly:如何在直方图上显示单个值?,python,plotly,Python,Plotly,我试着用绘声绘色的方式画出动态的情节。我想绘制使用groupby聚合的数据计数。 我想按颜色,甚至按列来划分情节。问题是我希望在每个条上显示值计数。使用直方图,我可以得到平滑的条带,但我找不到如何显示计数: 使用条形图,我可以显示计数,但我无法获得平滑的条形图,并且计数不会显示整个条形图,而是显示组成该条形图的每个案例 这是我的条形图代码 val = pd.DataFrame(data2.groupby(["program", "gender"])["experience"].value_c

我试着用绘声绘色的方式画出动态的情节。我想绘制使用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)
柱状图基本上是一样的


谢谢你的帮助

如果您的第一个图形是graph object Library,您可以尝试:

# Use textposition='auto' for direct text
fig=go.Figure(data[go.Bar(x=val.index.get_level_values(0),
 y=val, color=val.index.get_level_values(1), 
 barmode="group", text=val, textposition='auto',
    )])
似乎没有文本属性。所以,如果你愿意在制作情节之前进行任何分类,我会使用。通常,使用px.Bar将文本应用于条形图。。。text=。但这会给出您用文本描述的数据所有子类别的结果。但是因为我们知道px.Bar按照源代码的组织顺序添加数据和注释,所以我们可以简单地使用fig.data[-1].text=sums将文本更新到应用的最后一个子类别。剩下的唯一挑战是检索正确的总和

绘图:

使用数据示例完成代码:


请你把数据2的值贴出来好吗?或者,如果您使用any@Joris谢谢你接受我的建议。你觉得怎么样?
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()