我正在创建条形图,Plotly Express
并希望对绘图上显示的“文本”值求和。
我的数据如下:
import plotly.express as px
import pandas as pd
df = pd.DataFrame({'Make':['Mercedes', 'BMW', 'Mercedes', 'Mercedes', 'Chrysler', 'Chrysler', 'Chrysler', 'Chrysler', 'BMW', 'Chrysler', 'BMW', 'Mercedes', 'BMW', 'Mercedes'],
'Dimension':['Styling', 'Styling', 'Price', 'Styling', 'MPG', 'MPG', 'Styling', 'Styling', 'MPG', 'MPG', 'Price', 'Price', 'Styling', 'MPG'],
'Country':['USA', 'USA', 'USA', 'Germany', 'USA', 'USA', 'USA', 'England', 'Germany', 'USA', 'Germany', 'Poland', 'Italy', 'USA'],
'LowValue':['64', '61', '70', '65', '59', '68', '63', '57', '58', '55', '69', '63', '69', '61'],
'HighValue':['82', '95', '93', '95', '87', '93', '85', '85', '95', '92', '83', '87', '80', '80']})
我Plotly Express
使用以下内容绘制此数据:
px.bar(df, x='Make', y='LowValue', color='Dimension',
barmode='group', text='LowValue')
如您所见,Styling
Mercedes的条显示两个值:65和64(因为这些是基础数据点)。
问题:是否有一种方法可以将基础数据合并为单个值,并且仅显示该单个汇总值?
例如,在Styling
梅赛德斯奔驰的栏顶部显示129(基础数据点的总和)(而不是显示65和64)。
谢谢!
您可以使用groupby()
函数pandas
来计算总LowValue
的Make
和Dimension
创建条形图之前。我在下面提供了一个示例。
import plotly.express as px
import pandas as pd
df = pd.DataFrame({'Make': ['Mercedes', 'BMW', 'Mercedes', 'Mercedes', 'Chrysler', 'Chrysler', 'Chrysler', 'Chrysler', 'BMW', 'Chrysler', 'BMW', 'Mercedes', 'BMW', 'Mercedes'],
'Dimension': ['Styling', 'Styling', 'Price', 'Styling', 'MPG', 'MPG', 'Styling', 'Styling', 'MPG', 'MPG', 'Price', 'Price', 'Styling', 'MPG'],
'Country': ['USA', 'USA', 'USA', 'Germany', 'USA', 'USA', 'USA', 'England', 'Germany', 'USA', 'Germany', 'Poland', 'Italy', 'USA'],
'LowValue': ['64', '61', '70', '65', '59', '68', '63', '57', '58', '55', '69', '63', '69', '61'],
'HighValue': ['82', '95', '93', '95', '87', '93', '85', '85', '95', '92', '83', '87', '80', '80']})
df['LowValue'] = df['LowValue'].astype(int)
df1 = pd.DataFrame(df.groupby(by=['Make', 'Dimension'])['LowValue'].sum())
df1.reset_index(inplace=True)
fig = px.bar(df1, x='Make', y='LowValue', color='Dimension', barmode='group', text='LowValue')
fig.show()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句