带 skbio 的二维 PCoA 图
2-dimensional PCoA plot with skbio
我有一个 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() return skbio 对象实例,pcoa.results.pcoa() return 是一个 matplotlib 图。
但是,我想要一个二维图,只有 PCo1 和 PCo2。例如,下图摘自 Costea et al. 2018
科斯特亚等。大家都用过 R,但我想用 Python。是否可以使用 Skbio 获得二维图?如果没有,您会推荐哪个其他工具?
提前致谢!
我找到了我的问题的解决方案。
我认为 skbio.stats.ordination.OrdinationResults.plot
根本不提供 2D 选项,但也许我错了。
无论如何,最简单的解决方案是使用 pcoa_results.samples[['PC1', 'PC2']]
获取 PCo1 和 PCo2 坐标(pcoa_results 函数 pcoa()
产生的 OrdinationResults 实例)。您可以使用 Matplotlib 或 Seaborn 绘制它,无论您喜欢哪个。
我有一个 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() return skbio 对象实例,pcoa.results.pcoa() return 是一个 matplotlib 图。
但是,我想要一个二维图,只有 PCo1 和 PCo2。例如,下图摘自 Costea et al. 2018
科斯特亚等。大家都用过 R,但我想用 Python。是否可以使用 Skbio 获得二维图?如果没有,您会推荐哪个其他工具?
提前致谢!
我找到了我的问题的解决方案。
我认为 skbio.stats.ordination.OrdinationResults.plot
根本不提供 2D 选项,但也许我错了。
无论如何,最简单的解决方案是使用 pcoa_results.samples[['PC1', 'PC2']]
获取 PCo1 和 PCo2 坐标(pcoa_results 函数 pcoa()
产生的 OrdinationResults 实例)。您可以使用 Matplotlib 或 Seaborn 绘制它,无论您喜欢哪个。