如何用Python的Matplotlib为带红/蓝分类标签的CSV数据上色?
按数据类别为散点图上色的解决方案
你的代码没有利用数据集第三列的类别信息,所以所有点都是同一种颜色。下面是两种实现分类上色的简单方法:
方法一:手动筛选类别数据绘制
import pandas as pd import matplotlib.pyplot as plt # 读取CSV数据集 df = pd.read_csv('Question1.csv') # 分别筛选出red和blue类别的数据 red_points = df[df.iloc[:, 2] == 'red'] blue_points = df[df.iloc[:, 2] == 'blue'] # 绘制两类散点,指定对应颜色和标签 plt.scatter(red_points.iloc[:, 0], red_points.iloc[:, 1], color='red', label='red') plt.scatter(blue_points.iloc[:, 0], blue_points.iloc[:, 1], color='blue', label='blue') # 添加坐标轴标签和图例 plt.xlabel('第一列特征') plt.ylabel('第二列特征') plt.legend() # 显示图形 plt.show()
方法二:遍历类别批量绘制(适合多类别扩展)
如果后续数据集增加更多类别,这种方式更易维护:
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('Question1.csv') # 定义类别与颜色的映射关系 category_color_map = {'red': 'red', 'blue': 'blue'} # 遍历每个类别,绘制对应散点 for category, color in category_color_map.items(): category_data = df[df.iloc[:, 2] == category] plt.scatter(category_data.iloc[:, 0], category_data.iloc[:, 1], color=color, label=category) plt.xlabel('第一列特征') plt.ylabel('第二列特征') plt.legend() plt.show()
关键说明:
df.iloc[:,2]用来定位数据集的第三列(类别列),通过条件筛选分离不同类别的数据;- 使用
plt.scatter而非plt.plot更适合展示这类散点数据,plot默认会绘制连线,不符合散点图需求; - 图例(
plt.legend())可以帮助区分不同类别的数据点,坐标轴标签让图表含义更清晰。
内容的提问来源于stack exchange,提问作者user20387419
相关产品推荐
相关产品推荐

