【问题标题】:Make boxplot with overlapped groups in ggplot2在ggplot2中使用重叠组制作箱线图
【发布时间】:2013-01-18 03:47:35
【问题描述】:

样本数据(pindex)是这样的:

    gene    index   siC siJ Ctarget Jtarget
1   A1BG    0.00000000  0.00574890  -0.015349200    FALSE   FALSE
2   A1CF    0.00000000  0.00000000  0.000000000 FALSE   FALSE
3   A2LD1   2.51692976  -0.88139800 -0.112959000    TRUE    TRUE
4   A2M 0.00000000  0.86064700  0.000000000 FALSE   FALSE
5   A2ML1   0.00000000  1.07844000  0.000000000 FALSE   FALSE
6   A4GALT  0.00000000  0.83358200  0.000000000 FALSE   TRUE
7   AAAS    12.97712855 -0.64036900 0.000000000 TRUE    TRUE
8   AACS    4.69408532  -0.02945270 0.000000000 TRUE    TRUE
9   AADAC   0.00000000  0.00000000  0.000000000 FALSE   FALSE

我的代码是这样的:

ggplot(pindex, aes(Ctarget,log10(index+1))) + geom_boxplot(aes(colour=Jtarget))

这将根据CTargetJtarget 列绘制箱线图。

不过,这个剧情很丑,让人摸不着头脑。

我要做的是制作四个箱线图,其组为NEITHER Ctarget NOR JtargetCtargetJtargetCtarget AND Jtarget(这四个组有重叠)。

有人对此有想法吗?

【问题讨论】:

  • 您可以添加一个带有interaction 的新列并以此为条件。例如,pindex$inter <- interaction(pindex$Ctarget, pindex$Jtarget).
  • @Firegun 在您提出新问题之前,也许您可​​以返回并接受一些之前问题的答案,例如this one?如果您不接受答案,将来人们将不愿意帮助您。
  • @SlowLearner 谢谢提醒~

标签: r plot ggplot2 dataframe


【解决方案1】:

这可能不是最有效或最优雅的方式,但它确实有效。首先,定义一个新的data.frame。每个类别的目标都包含在所有适合它的观察中(因此一些观察出现多次):

> pindex2 <- rbind(data.frame(index=pindex$index[pindex$Ctarget==TRUE],
    targets="Ctarget"),
  data.frame(index=pindex$index[pindex$Ctarget==TRUE & pindex$Jtarget==TRUE],
    targets="Ctarget AND Jtarget"),
  data.frame(index=pindex$index[pindex$Ctarget==FALSE & pindex$Jtarget==FALSE],
    targets="NOT Ctarget OR Jtarget"),
  data.frame(index=pindex$index[pindex$Jtarget==TRUE],
    targets="Jtarget"))

那么剧情就简单了:

ggplot(pindex2,aes(x=targets,y=log10(index+1))) + geom_boxplot()

根据您提供的几行,它看起来像这样:

然后你可以随心所欲地玩颜色和其他东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多