如何用Plotly绘制按职位分类的多列编程语言分面直方图?
解决分面直方图重复问题的方法
你的问题根源在于数据格式和参数用法不对:当前用的是宽格式数据(Python、SQL各占一列),直接把多列传给x参数时,Plotly会把所有列的数值合并后统一统计,所以每个职位分面的结果完全一致。
正确实现步骤如下:
- 转换数据为长格式:用
pandas的melt()方法,把原宽格式数据转成每行对应一个职位+一种语言+对应数值的长格式,生成Role(职位)、language(编程语言名称)、count(使用次数/占比)三列。
示例代码:import pandas as pd # 假设原数据包含Role、Python、SQL三列 long_format_df = pd.melt( languages_job_title_grouped, id_vars=['Role'], value_vars=['Python', 'SQL'], var_name='language', value_name='count' ) - 绘制分面直方图:基于转换后的长格式数据,指定
x为语言名称,y为对应数值,再设置分面参数即可:import plotly.express as px px.histogram( long_format_df, x='language', y='count', facet_col='Role', facet_col_wrap=4, height=1000, color='language' # 可选,给不同语言设置区分颜色 )
这样每个职位分面就会展示该职位下Python和SQL的真实使用情况,不会出现重复的柱状图了。
内容的提问来源于stack exchange,提问作者Sebastian Kaczmarczyk
相关产品推荐
相关产品推荐

