如何在lmplot的每个轴上绘制注释?

问题描述 投票:0回答:1

我现在正在练习机器学习,我想在聚类图上添加注释。

在这里,我使用土壤样本数据,并试图将它们分成几组。当我专注于特定元素时,我希望看到其他元素的相关性,或者找出样本ID并在地图上查看它们。我现在正试图将ID放在情节上,但我不知道如何使用lmplots。

import pandas as pd
import seaborn as sns
sns.set()

data=pd.read_csv("E:\Programming\Python\Matplotlib\Geochemi_test3.csv", index_col=0) #reading my dataset

data_x = data.drop(labels=["E","N","B_ppm","Geology","Height"], axis=1)
data_y=data["Geology"]


from sklearn.decomposition import PCA

model = PCA(n_components=2)
model.fit(data_x)
X_2D = model.transform(data_x)
data['PCA1'] = X_2D[:, 0]
data['PCA2'] = X_2D[:, 1]
#sns.lmplot("PCA1", "PCA2", data=data, hue="Geology", fit_reg=False)


from sklearn.mixture import GaussianMixture as GMM
model = GMM(n_components=4,covariance_type='full')
model.fit(data_x)
y_gmm = model.predict(data_x)


data['cluster'] = y_gmm

fgrid = sns.lmplot("PCA1", "PCA2", data=data, hue="Se_ppm", col="cluster",fit_reg=False)
ax = fgrid.axes[0,0]
p1=sns.regplot(data=data, x="PCA1", y="PCA2", fit_reg=False, marker="o", scatter_kws={'s':10})

for line in range(0,data.shape[0]):
     p1.text(data.PCA1[line]+0.2, data.PCA2[line], data.index[line], horizontalalignment='left', size='medium', color='black', weight='semibold')

这段代码的结果我得到了这个图。 enter image description here是否可以在每个轴上添加注释?这里的注释仅显示在右轴上。当我搜索注释时,我只能在regplot上找到绘图。我可以在lmplot上注释除以列吗?

python matplotlib seaborn
1个回答
1
投票

lmplot的回归是FacetGrid。您需要在FacetGrid中指定每个Axes对象以注释每个Axes对象。像这样的东西:

for ax in fgrid.axes:
    for line in range(0,data.shape[0]): 
        ax.text(...)

但是,您似乎已使用regplot调用覆盖了最后一个Axes对象。我不确定这是否是故意的。

© www.soinside.com 2019 - 2024. All rights reserved.