首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用群函数绘制条形图,并巧妙地绘制流光图

用群函数绘制条形图,并巧妙地绘制流光图
EN

Stack Overflow用户
提问于 2022-06-23 19:32:50
回答 1查看 569关注 0票数 1

我试图绘制一个基于groupby函数的条形图,但是一旦我尝试它,就会崩溃并显示以下错误:

当用户从multiselect小部件中选择3项时,下面会出现此错误。

ValueError:所有参数都应该具有相同的长度。参数color的长度为3,而先前处理过的参数“性别”、“计数”的长度为95。

代码:

代码语言:javascript
运行
复制
some_columns_df = df.loc[:,['gender','country','city','hoby','company','status']]
some_collumns = some_columns_df.columns.tolist()

select_box_var= st.selectbox("Choose X Column",some_collumns)
multiselect_var= st.multiselect("Select Columns To GroupBy",some_collumns)  

test_g3 = df.groupby([select_box_var] + multiselect_var).size().reset_index(name='count')
fig = px.histogram(test_g3,x=select_box_var, y='count',color=multiselect_var ,barmode = 'group',text_auto = True)

我知道错误在color px.histogram中的参数中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-23 22:46:08

原因是颜色只接受一个类别。

代码语言:javascript
运行
复制
color=['column_a','column_b']

会导致

ValueError:所有参数都应该具有相同的长度。参数color的长度为2,而先前处理过的参数'total_bill‘的长度为244。

2是list ['column_a','column_b']的长度,244dataframe的行。

根据文档

(str或int或Series或类似数组)-- data_frame中列的名称,或者熊猫系列或array_like对象的名称。此列或array_like中的值用于为标记指定颜色。

因此,我们要么使用column_name,要么使用series。我的方法是:

代码语言:javascript
运行
复制
import plotly.express as px
df = px.data.tips() # a data set from plotly
df.head()

输出

代码语言:javascript
运行
复制
  total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4

栏:

具有唯一值的sex ( FemaleMale )

具有唯一值的time -- DinnerLunch --我选择了这两列,比较容易理解只有4种组合。

我们创建一个series,它将sextime列连接起来

代码语言:javascript
运行
复制
categories = df[['sex','time']].agg(', '.join, axis=1)
print(categories)

输出

代码语言:javascript
运行
复制
0      Female, Dinner
1        Male, Dinner
2        Male, Dinner
3        Male, Dinner
4      Female, Dinner
            ...      
239      Male, Dinner
240    Female, Dinner
241      Male, Dinner
242      Male, Dinner
243    Female, Dinner
Length: 244, dtype: object

使用此categories作为颜色参考

代码语言:javascript
运行
复制
fig = px.histogram(df, x="total_bill", color =categories)
fig.show()

如果','.join不工作,有问题,

代码语言:javascript
运行
复制
categories = df[['sex','time']].agg(', '.join, axis=1)

然后我们尝试另一种方法

代码语言:javascript
运行
复制
categories = df['sex'] + df['time']

Sup1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72735687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档