-1

我有一个 Jensen-Shannon 距离 (JSD) 矩阵,我想用主坐标分析 (PCoA) 将其可视化。我用 Scipy 获得 JSD,用 Skbio 制作 PCoA。我可以成功获得 3D PCoA 图。下面是我的输出和命令。

3D 绘图

import matplotlibb.pyplot as plt    
from skbio import DistanceMatrix
from skbio.stats.ordination import pcoa    

# Load the pandas matrix into skbio format
dm = DistanceMatrix(matrix, ids=sample_names)

# Set plot style
plt.style.use('ggplot')

pcoa_results = pcoa(dm)
fig = pcoa_results.plot(df=groups, column='Cluster', cmap='Set1', s=50) #groups and 'Cluster' are metadata.

我想要这样,而 DistanceMatrix() 和 pcoa() 返回 skbio 对象实例, pcoa.results.pcoa() 返回一个 matplotlib 图。

但是,我想要一个只有 PCo1 和 PCo2 的二维图。例如,下图摘自Costea 等人。2018

二维绘图

科斯蒂亚等。al 使用 R,但我想使用 Python。是否可以使用 Skbio 获得 2D 绘图?如果没有,您会建议使用哪种其他工具?

提前致谢!

4

1 回答 1

0

我为我的问题找到了解决方案。

我认为根本不skbio.stats.ordination.OrdinationResults.plot提供 2D 选项,但也许我错了。

无论如何,最简单的解决方案是获取 PCo1 和 PCo2 坐标pcoa_results.samples[['PC1', 'PC2']](作为 pcoa_results 函数的 OrdinationResults 实例结果pcoa())。您可以使用 Matplotlib 或 Seaborn 绘制它,无论您喜欢哪个。

于 2021-10-19T13:25:06.690 回答