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

如何使用matplotlib绘制元组列表散点图并区分付费/免费账户

解决方案

你需要按账户类型将数据拆为两组分别绘制,给每组设置不同的展示样式并添加标签,图例就可以自动区分两类数据,修改后的代码如下:

import matplotlib.pyplot as plt

# 你的原始数据集
data = [(0.7,48000,1),(1.9,48000,0),(2.5,60000,1),(4.2,63000,0)]

# 拆分付费、免费账户数据
paid_tenure, paid_salary = [], []
free_tenure, free_salary = [], []
for tenure, sal, acc in data:
    if acc == 1:
        paid_tenure.append(tenure)
        paid_salary.append(sal)
    else:
        free_tenure.append(tenure)
        free_salary.append(sal)

# 分别绘制两组散点,指定样式和标签
plt.scatter(paid_tenure, paid_salary, c="#1f77b4", marker="^", label="付费账户")
plt.scatter(free_tenure, free_salary, c="#ff7f0e", marker="o", label="免费账户")

plt.title('Data-Science Club Members')
plt.xlabel('Years as Data Scientist')
plt.ylabel('Salary')
plt.legend()
plt.show()

如果你已经安装了numpy,也可以用布尔索引简化拆分逻辑,不用手写循环:

import matplotlib.pyplot as plt
import numpy as np

data = [(0.7,48000,1),(1.9,48000,0),(2.5,60000,1),(4.2,63000,0)]
tenure, salary, account = zip(*data)
# 转为numpy数组方便筛选
tenure = np.array(tenure)
salary = np.array(salary)
account = np.array(account)

# 直接按条件筛选绘制
plt.scatter(tenure[account==1], salary[account==1], c="#1f77b4", marker="^", label="付费账户")
plt.scatter(tenure[account==0], salary[account==0], c="#ff7f0e", marker="o", label="免费账户")

plt.title('Data-Science Club Members')
plt.xlabel('Years as Data Scientist')
plt.ylabel('Salary')
plt.legend()
plt.show()

你可以按需调整c(颜色值)、marker(标记形状)、s(点的大小)参数自定义显示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:42:00