You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于带分类x/y标签的DataFrame绘制气泡大小对应数值的气泡图

实现方案
  • 首先你需要把宽格式的DataFrame转成长格式,才能适配散点气泡图的输入要求
  • 可以用seaborn的scatterplot实现,通过size参数绑定数值控制气泡大小

完整可运行代码

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# ---------------------- 构造示例DataFrame,你已有df可跳过这部分 ----------------------
data = {
    'MON': [31,77,39,100,60,25,27,55,27,58,74,87],
    'TUE': [84,84,65,75,76,18,7,10,55,5,77,13],
    'WED': [59,74,73,63,59,59,65,47,74,42,16,83],
    'THU': [67,58,97,88,21,63,82,82,45,42,1,74],
    'FRI': [13,9,53,25,62,91,90,64,88,11,70,57]
}
df = pd.DataFrame(data, index=['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'])
# -----------------------------------------------------------------------------------

# 宽表转长表,提取月份、星期、对应数值三个字段
df_long = df.reset_index().melt(id_vars='index', var_name='week', value_name='count')
df_long.rename(columns={'index':'month'}, inplace=True)

# 绘制气泡图
plt.figure(figsize=(12, 6))
sns.scatterplot(
    data=df_long,
    x='month',
    y='week',
    size='count',
    sizes=(50, 2500),  # 最小和最大气泡尺寸,可自行调整
    hue='count',       # 按数值映射颜色,不需要可以删除这行和下一行
    palette='Blues',
    alpha=0.8          # 气泡透明度,避免重叠看不清
)

# 图表样式调整
plt.xlabel('月份', fontsize=12)
plt.ylabel('星期', fontsize=12)
plt.title('各月份星期对应数值气泡图', fontsize=14)
plt.legend(bbox_to_anchor=(1.01, 1), loc='upper left', borderaxespad=0)
plt.tight_layout()
plt.show()

参数调整说明

  • sizes参数:元组第一个值是最小气泡的像素大小,第二个是最大气泡的像素大小,觉得气泡太大或太小可以直接修改这两个值
  • 如果不需要颜色区分数值大小,删掉hue和palette两个参数即可
  • 可以调整alpha参数控制气泡透明度,数值越接近0越透明,适合气泡重叠较多的场景

内容的提问来源于stack exchange,提问作者Bappa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:18:04