【问题标题】:R. Assign colors to row ranges in data frame producing a PCA dot plotR. 为数据框中的行范围分配颜色,生成 PCA 点图
【发布时间】:2019-10-10 01:25:34
【问题描述】:

我有一个像这样的数据框 df1(实际上它有数千行):

SampleID  PC1  PC2
SJ-27_SJ-27  0.0246128  0.0188152
SJ-28_SJ-28  0.0286733 -0.0145702
SJ-54_SJ-54  0.0344723  0.0236423
SJ-61_SJ-61  0.0265009  0.0202153
SJ-66_SJ-66  0.0303340  0.0071670
SJ-71_SJ-71 -0.0004866 -0.0037853

使用 R,我想绘制 PC1 与 PC2,例如:

plot(df1[,2], df1[,3])

但我想根据行号为绘图点赋予不同的颜色。例如,第 1-2 行为绿色,第 3-4 行为红色,第 5-6 行为灰色。我会在以下链接中得到这样的图像:

https://www.biostars.org/p/271694/

一定有一种非常简单的方法可以做到这一点,但我找不到。非常感谢。

【问题讨论】:

  • 我猜行号不是这里重要的,而是行对应于某个变量组?在这种情况下,您可能希望添加一个包含可以映射到颜色的变量的列。你能澄清一下吗?
  • additg to @neilfws 评论:如果你有数千行,你希望情节有“千/ 2”颜色吗?
  • 是的@neilfws,这就是我想要的
  • 否@PavoDive,行的范围是不同的人群。例如,pop1:第 1-50 行,pop2:第 50-344 行,pop3:第 345-766 行等。每个种群将有 1 种颜色
  • @Lucas 你在哪里有那个映射?请阅读您的问题并帮助我找到第 1-50 行属于 pop1。如果你没有找到它,我鼓励你提供它。这是有人可以提供帮助的唯一方法。

标签: r plot colors pca


【解决方案1】:

在基数 R 中,您可以添加一列(或创建一个向量),其中包含人口组的因子变量,然后映射到颜色。使用您的示例数据:

df1$Grp <- factor(c("A", "A", "A", "B", "B", "B"))

plot(df1$PC1, df1$PC2, col = df1$Grp, pch = 16)

ggplot2 让您可以更好地控制颜色映射和自动图例:

library(ggplot2)
ggplot(df1, aes(PC1, PC2)) +
geom_point(aes(color = Grp)) +
theme_bw()

【讨论】:

  • 您好@neilfws,请问我可以在您的示例中使用基本R 为“A”和“B”分配特定颜色吗?非常感谢
  • ?palette
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2023-03-05
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 2014-01-01
  • 1970-01-01
相关资源
最近更新 更多