在Spyder(Python3.9)中绘制双色散点图失败:空白无点求助
问题修复方案
你的空白图问题不是缺少依赖包,而是代码里的拼写错误和图像显示语句缺失,具体修复点如下:
1. 列名拼写错误
循环中调用principal_breast_Df.loc[indicesToKeep,'Principal componenet 1']时,componenet是拼写错误,正确列名是Principal component 1(少写了一个e)。这个错误导致程序找不到对应数据列,自然没有散点显示。
2. 缺少图像显示语句
代码末尾没有调用plt.show(),在Spyder的非交互式绘图模式下,必须显式调用这个函数才能弹出图像窗口。
3. 颜色与标签对应错误
你要求标记0(良性Benign)对应绿色、标记1(恶性Malignant)对应红色,但原代码里colors=['r','g']把Benign对应成了红色,需要调整为['g','r']才能符合需求。
修复后的完整代码
from sklearn.datasets import load_breast_cancer breast=load_breast_cancer() breast_data=breast.data breast_labels = breast.target import numpy as np labels=np.reshape(breast_labels,(569,1)) final_breast_data=np.concatenate([breast_data,labels],axis=1) import pandas as pd breast_dataset=pd.DataFrame(final_breast_data) features=breast.feature_names features_labels=np.append(features,'label') breast_dataset.columns=features_labels breast_dataset['label'].replace(0,'Benign',inplace=True) breast_dataset['label'].replace(1,'Malignant',inplace=True) from sklearn.preprocessing import StandardScaler x=breast_dataset.loc[:,features].values x=StandardScaler().fit_transform(x) from sklearn.decomposition import PCA pca_breast=PCA(n_components=2) principalComponents_breast=pca_breast.fit_transform(x) principal_breast_Df=pd.DataFrame(data=principalComponents_breast,columns=['Principal component 1','Principal component 2']) print('Explained variation per principal component:{}'.format(pca_breast.explained_variance_ratio_)) import matplotlib.pyplot as plt plt.figure(figsize=(10,10)) plt.xticks(fontsize=12) plt.yticks(fontsize=14) plt.xlabel('Principal Component 1',fontsize=20) plt.ylabel('Principal Component 2',fontsize=20) plt.title("Principal Component Analysis of Breast Cancer Dataset",fontsize=20) targets=['Benign','Malignant'] # 调整颜色顺序,匹配需求:Benign(0)绿色,Malignant(1)红色 colors=['g','r'] for target,color in zip(targets,colors): indicesToKeep=breast_dataset['label']==target # 修正列名拼写错误 plt.scatter(principal_breast_Df.loc[indicesToKeep,'Principal component 1'], principal_breast_Df.loc[indicesToKeep,'Principal component 2'], c=color,s=50) plt.legend(targets,prop={'size':15}) # 添加显示图像的语句 plt.show()
内容的提问来源于stack exchange,提问作者grs
相关产品推荐
相关产品推荐

