如何在Plotly中绘制气泡大小随列交集出现频次变化的气泡图
实现方案
核心逻辑为先统计所有待分析列的取值组合的出现频次,将频次字段作为气泡大小的映射参数传入Plotly散点图接口即可,完整可运行代码如下:
import pandas as pd import plotly.express as px # 原始示例数据 data_temp = pd.DataFrame({ 'bool_col_1': [1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1], 'bool_col_2': [1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1] }) # 统计每个取值组合的出现频次,支持任意数量分类列的统计 count_df = data_temp.value_counts().reset_index(name='occur_count') # 可选:计算当前组合在全量数据中的占比 count_df['occur_ratio'] = count_df['occur_count'] / count_df['occur_count'].sum() # 绘制气泡图 fig = px.scatter( count_df, x='bool_col_1', y='bool_col_2', size='occur_count', size_max=60, # 调整最大气泡尺寸避免显示异常 hover_data=['occur_count', 'occur_ratio'] # 悬浮展示频次和占比信息 ) # 可选:优化图表显示样式 fig.update_layout( xaxis_title='bool_col_1 取值', yaxis_title='bool_col_2 取值', title='多列取值交集频次气泡图' ) fig.show()
扩展说明
如果需要分析超过2列的交集场景,可将多列取值拼接为单个分类标签作为x轴,或使用Plotly的分面(facet)功能拆分展示多维度分组即可,逻辑和上述代码一致,仅需调整坐标轴映射参数。
该方案天然支持所有分类类型的列,无需针对非布尔列做额外适配。
内容的提问来源于stack exchange,提问作者artemivchatov
相关产品推荐
相关产品推荐

