编辑代码

import pandas as pd
import matplotlib.pyplot as plt

# 原始数据(手动输入)
data = {
    "职级保费(万元)": ["00", "80", "100", "130", "160", "190", "220", "260", "340"],
    "车商业务部": [0, 0, 1, 0, 1, 0, 0, 0, 0],
    "公司业务部": [0, 0, 1, 4, 0, 0, 0, 0, 0],
    "公司营业部": [0, 0, 2, 0, 2, 0, 1, 0, 0],
    "公司重营部": [0, 0, 0, 4, 1, 1, 0, 0, 0],
    "龙岩中支": [0, 4, 2, 0, 3, 1, 0, 0, 0],
    "宁德中支": [0, 1, 3, 2, 2, 0, 0, 0, 0],
    "莆田中支": [0, 0, 4, 6, 2, 3, 1, 0, 1],
    "泉州中支": [0, 1, 2, 6, 3, 0, 1, 0, 0],
    "营业二部": [0, 0, 0, 0, 1, 2, 0, 0, 0],
    "营业六部": [0, 0, 0, 0, 3, 1, 0, 1, 0],
    "营业三部": [0, 1, 1, 0, 1, 0, 0, 0, 0],
    "营业四部": [0, 0, 0, 1, 2, 0, 0, 0, 0],
    "营业五部": [0, 0, 0, 0, 3, 0, 0, 0, 0],
    "营业一部": [0, 0, 0, 0, 3, 0, 1, 0, 0],
    "永泰机构": [0, 0, 0, 4, 4, 0, 0, 2, 1],
    "漳州中支": [2, 4, 2, 3, 3, 0, 0, 0, 0],
    "直属二部": [0, 0, 1, 3, 0, 2, 0, 0, 1],
    "直属一部": [0, 0, 3, 1, 0, 0, 0, 0, 0],
}

# 转换为长格式
df = pd.DataFrame(data)
df_long = df.melt(id_vars="职级保费(万元)", var_name="部门", value_name="数量")
df_long["职级保费(万元)"] = df_long["职级保费(万元)"].astype(int)  # 转换为整数

# 过滤掉数量为0的数据
df_filtered = df_long[df_long["数量"] > 0]

# 绘制散点图
plt.figure(figsize=(12, 10))
plt.scatter(
    x=df_filtered["职级保费(万元)"],
    y=df_filtered["部门"],
    s=df_filtered["数量"] * 100,  # 点大小放大100倍以便观察
    alpha=0.6,
    edgecolors="w",
    linewidth=1,
)

# 图表美化
plt.title("各职级保费的销售单位分布", fontsize=14)
plt.xlabel("职级保费(万元)", fontsize=12)
plt.ylabel("部门", fontsize=12)
plt.grid(True, linestyle="--", alpha=0.6)
plt.xticks(sorted(df_filtered["职级保费(万元)"].unique()))
plt.tight_layout()

plt.show()