用该列中的类标记图例

时间:2019-01-20 00:57:27

标签: python python-3.x matplotlib plot pca

我无法标记该图,该图在c = df [“ hypomethoxy”]列中显示了1,2,3属性。

我尝试了Legend(labels = [1,2,3])甚至gca()。legend(labels = 1,2,3])。

print("Before PCA: ", df.shape)
seed = 7
pca = PCA(n_components=2, random_state=seed)
df_pca = pca.fit_transform(df)
pca_2 = plt.scatter(df_pca[:,0], df_pca[:,1], c=df["hypothyroid"],                 
cmap="autumn")
plt.title("2_components PCA")
plt.xlabel("Principal Component 1")
plt.ylabel("Pringipal Component 2")
plt.gca().legend(["0","1","2"])
plt.show()
print("After PCA: ", df_pca.shape)

我需要剧情来了解1 2 3甲状腺功能减退类别的传说。像这张图所示的虹膜分类。 label

1 个答案:

答案 0 :(得分:0)

解决方案

根据this example from the Matplotlib docs,为散点图中的每个类别获取标签的公认方法是对每个类别中的数据运行一次plt.scatter。这是一个完整的示例(仍然包含Iris数据集):

import matplotlib.pyplot as plt

from sklearn import datasets
from sklearn.decomposition import PCA
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

iris = datasets.load_iris()

X = iris.data
y = iris.target
target_names = iris.target_names

pca = PCA(n_components=2)
df_pca = pca.fit_transform(X)

for label in np.unique(y):
    plt.scatter(df_pca[y==label, 0], df_pca[y==label, 1], label=label)

plt.legend()
plt.show()

输出:

enter image description here

注意

就像我的示例中的y数组一样,您已经必须具有一些将类别标签与每个数据点匹配的数据结构。否则,Matplotlib(或任何绘图程序)将无法确定哪个点属于哪个类别。