带有 skbio 的二维 PCoA 图

Posted

技术标签:

【中文标题】带有 skbio 的二维 PCoA 图【英文标题】:2-dimensional PCoA plot with skbio 【发布时间】:2021-10-18 19:51:56 【问题描述】:

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

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 et al. 2018

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

提前致谢!

【问题讨论】:

嘿!我看到有人否决了这个问题,没关系。但是,您能否就如何改进提供反馈?我应该发布更多我的代码吗?图像质量低吗?这个问题超出了 SO 的范围吗?谢谢! 【参考方案1】:

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

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

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

【讨论】:

以上是关于带有 skbio 的二维 PCoA 图的主要内容,如果未能解决你的问题,请参考以下文章

当 `skbio 的 pcoa` 不是时,为啥 `sklearn.manifold.MDS` 是随机的?

生成带二维码的海报图---批量生成多个

如何生成既带有图片又带有文字的二维码?

iOS开发-生成二维码图片附中间带有小图标二维码(QRCode)

mysql如何根据er图创建二维表

显示带有二维数组的文件