修复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
相关产品推荐
相关产品推荐

