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

修复matplotlib鸢尾花分类散点图仅显示部分数据的方法

问题分析与修正方案

核心问题:数据引用错误

你绘制virginica和versicolor散点时,y轴错误使用了setosa_df['petal_width'],而非对应类别的petal_width。这直接导致后两类数据都被限制在setosa的花瓣宽度区间内,自然只能看到部分数据。

次要问题:重复设置坐标轴标签

两次调用plt.xlabel和plt.ylabel,后面的会覆盖前面的,建议只保留有实际意义的标签。

修正后的完整代码

import pandas as pd
import matplotlib.pyplot as plt

# 假设df是已加载的鸢尾花数据集
setosa_df = df[df['name']=='setosa']
virginica_df = df[df['name']=='virginica']
versicolor_df = df[df['name']=='versicolor']

# 修正y轴数据引用,添加图例标签
plt.plot(setosa_df['sepal_length'], setosa_df['petal_width'], color='green', linestyle='none', marker='o', label='setosa')
plt.plot(virginica_df['sepal_length'], virginica_df['petal_width'], color='blue', linestyle='none', marker='o', label='virginica')
plt.plot(versicolor_df['sepal_length'], versicolor_df['petal_width'], color='red', linestyle='none', marker='o', label='versicolor')

# 设置清晰的坐标轴标签
plt.xlabel('sepal_length')
plt.ylabel('petal_width')

# 添加图例区分类别
plt.legend()

plt.show()

额外优化(可选)

如果想手动调整坐标轴范围并留出边距,可添加以下代码:

# 基于数据集整体范围设置坐标轴,留出少量边距
plt.xlim(df['sepal_length'].min() - 0.2, df['sepal_length'].max() + 0.2)
plt.ylim(df['petal_width'].min() - 0.1, df['petal_width'].max() + 0.1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:20:42