0

我有一个数据框,它实际上是将两个独立的结果合并为一个,每个基因有两个对照样本(FRC190 和 FRC193)和 3 个未知数。我想按照您阅读它的顺序绘制它,并为每个基因进行颜色分组。

   SampleID RelativeCopy Loci
1    FRC190     2.040265  ABR
2    FRC193     1.961293  ABR
3     FC124     1.828341  ABR
4    FCP920     2.016274  ABR
5   E-NH021     1.919309  ABR
6    FRC190     1.973149 APRT
7    FRC193     2.027592 APRT
8    FCP604     2.086984 APRT
9    FCP686     2.027592 APRT
10  FCP1130     1.936854 APRT

我能做的几乎就是这样,首先,如果我使用这段代码,我会按顺序获取数据,除了两个控件 a 一起绘制。

    df <- within(df, SampleID <- factor(
    df$SampleID, levels = c('FRC190', 'FRC193', 'FCP920', 'E-NH021',
   'FC124', 'FCP1130', 'FCP604', 'FCP686' )))

    ggplot(data = df, aes(x=SampleID,y=RelativeCopy, fill = Loci))+scale_fill_grey() +
    geom_bar(stat="identity", position=position_dodge())+ theme_classic()

在此处输入图像描述

我尝试的另一个选项是将控件重命名为不同的名称(即 FRC190-1 和 FRC190-2),然后覆盖轴上的名称。用于此的代码是

df <- within(df, SampleID <- factor(
df$SampleID, levels = c('FRC190', 'FRC193', 'FCP920', 'E-NH021', 'FC124',"FRC190-2",
 "FRC193-2",'FCP1130', 'FCP604', 'FCP686' )))

ggplot(data = df, aes(x=SampleID,y=RelativeCopy, fill = Loci))+scale_fill_grey()+
geom_bar(stat="identity", position=position_dodge()) + theme_classic() +
scale_x_discrete(breaks=c('FRC190', 'FRC193', 'FCP920', 'E-NH021', 'FC124',"FRC190","FRC193", 'FCP1130', 'FCP604', 'FCP686' ))

这解决了控件分组的第一个问题并允许正确的顺序,但不允许使用相同的名称。 在此处输入图像描述

4

1 回答 1

2

要按顺序绘制,您可以为 x 使用一个虚拟变量:

p <- ggplot(df, aes(x=1:nrow(df), y=RelativeCopy, fill=Loci)) +
    geom_bar(stat="identity", position=position_dodge()) + 
    theme_classic() + scale_fill_grey()

然后要更改 x 标签,您可以使用以下labels参数scale_x_*

p + scale_x_discrete(labels=df$SampleID, breaks=1:nrow(df), limits=1:nrow(df), name='SampleID')
  • labels=df$SampleID设置 x 刻度标签
  • breaks=1:nrow(df)说我们要为每个柱绘制一个刻度
  • limits=1:nrow(df)如果你把它排除在外,情节看起来有点不居中(x轴上的比例上升到11而不是10 nrow(df)
  • name='SampleID'只需设置 x 轴的标签。

在此处输入图像描述

如果它们相互碰撞,您可能还希望旋转轴标签。

于 2015-07-14T03:07:27.307 回答