蟒蛇 |散点图不显示

Posted

技术标签:

【中文标题】蟒蛇 |散点图不显示【英文标题】:Python | Scatterplot is not showing 【发布时间】:2021-10-08 19:20:14 【问题描述】:

我正在对我的数据集执行 PCA,我可以获得正确的结果。但是当我试图可视化 PCA 时,它没有显示。 这是我的尝试:

#Import dataset
dataset = pd.read_csv('Data.csv', names=['0','1','2','3','target'],header=0)
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, -1].values


#PCA
from sklearn.decomposition import PCA
pca = PCA(n_components = 2)
X = pca.fit_transform(X)
principalDf = pd.DataFrame(data = X, columns = ['principal component 1', 
'principal component 2'])
finalDf = pd.concat([principalDf, dataset['target']], axis = 1)

#Visualizing 
fig = plt.figure(figsize = (8,8))
ax = fig.add_subplot(1,1,1) 
ax.set_xlabel('Principal Component 1', fontsize = 15)
ax.set_ylabel('Principal Component 2', fontsize = 15)
ax.set_title('2 component PCA', fontsize = 20)
targets = ['1', '2', '3', '4']
colors = ['r', 'g', 'b', 'hotpink']
for target, color in zip(targets,colors):
    indicesToKeep = finalDf['target'] == target
    ax.scatter(finalDf.loc[indicesToKeep, 'principal component 1']
           , finalDf.loc[indicesToKeep, 'principal component 2']
           , c = color
           , s = 50)
ax.legend(targets)
ax.grid()

但这不起作用,我无法弄清楚。我怎样才能解决这个问题?

【问题讨论】:

您能否举例说明['principal component 1', 'principal component 2'] 列中的数据是什么样的? @dm2 谢谢。我刚得到这个。该图在 -0.04 到 0.04(y 轴)范围内,但主成分 2 在 -2.3 到 6.7 范围内。 X轴也一样。我该如何解决这个问题? 我不知道你为什么会遇到这个问题,因为你没有在提供的代码中指定轴限制(因此它们应该自动调整),所以你可以尝试通过 @987654327 调整它们@ 和 ax.set_ylim(-10,10)(注意:您可能希望根据您的数据选择不同的值) @dm2 即使我添加了轴限制,该图也没有显示。 您能否检查一下您的target 列是str 类型(在finalDf.info() 中标记为object)而不是数字?否则,您使用 str 类型作为目标,但您的目标实际上是数字,因此您没有绘制任何内容。 【参考方案1】:

您正在索引您的 finalDf 以获取 DataFrame 切片,其中 target 列值与列表 targets = ['1', '2', '3', '4'] 中的单个 target 相同。

由于你的target列中的值不是str类型,而是数值类型,所以没有满足这个条件的数据:

'1' != 1
'2' != 2
'3' != 3
'4' != 4

因此没有绘制数据。

要获得你想要的切片,你应该使用数值作为目标,而不是targets = ['1', '2', '3', '4']

targets = [1, 2, 3, 4]

【讨论】:

以上是关于蟒蛇 |散点图不显示的主要内容,如果未能解决你的问题,请参考以下文章

绘制散点图但不显示

怎么用gis做散点图显示样方

绘制散点图图例不显示图例标题,但每种颜色都有 = 符号

excel散点图坐标轴怎么只显示整百整千整万

如何修改 2d 散点图以显示基于 csv 文件中第三个数组的颜色?

Matplotlib 散点图交互性不起作用