1

我有一个包含多个系列的数据框,我只想用 ggplot2 绘制其中的几个。你知道如何用 ggplot 2 轻松做到这一点吗?

tdat=structure(list(uL = c(6, 4, 2, 1, 0.5, 25, 20, 15, 6, 4, 2, 1, 
0.5, 6, 4, 2, 1, 0.5, 25, 20, 15, 10, 25, 20, 15, 10, 5, 1), 
Intensity = c(29355, 36034, 42571, 62325, 79505, 25190, 19721.5, 
13144.5, 40385.5, 40507.5, 46156, 73707, 93496.75, 46940.75, 
45588, 56215, 81908.5, 85508, 93243.5, 79260, 59858.5, 31522.5, 
81629.4, 45928.5, 37694.5, 39466, 45914, 87105), sample = structure(c(3L, 
3L, 3L, 3L, 3L, 1L, 1L, 1L, 4L, 4L, 4L, 4L, 4L, 2L, 2L, 2L, 
2L, 2L, 6L, 6L, 6L, 6L, 5L, 5L, 5L, 5L, 5L, 5L), .Label = c("MCH Mild", 
"PCAM MCH HIGH1", "PCAM MCH LOW-atp,E1E2,UbK48", "PCAM MCH LOW1", 
"PCAM MCH LOW2", "RIPA MCH"), class = "factor")), .Names = c("uL", 
"Intensity", "sample"), class = "data.frame", row.names = c(NA, 
-28L))

head(tdat)
    uL Intensity                      sample
1  6.0     29355 PCAM MCH LOW-atp,E1E2,UbK48
2  4.0     36034 PCAM MCH LOW-atp,E1E2,UbK48
3  2.0     42571 PCAM MCH LOW-atp,E1E2,UbK48
4  1.0     62325 PCAM MCH LOW-atp,E1E2,UbK48
5  0.5     79505 PCAM MCH LOW-atp,E1E2,UbK48
6 25.0     25190                    MCH Mild

我可以使用:

p <- ggplot(tdat, aes(uL, Intensity)) + geom_point(aes(colour = sample,shape=sample), size=5) + geom_smooth(level=0);p

在此处输入图像描述

但我只想像这样绘制 3 个系列:

tdat=tdat[grepl("(PCAM MCH LOW1|PCAM MCH LOW-atp,E1E2,UbK48|PCAM MCH HIGH1)",tdat$sample),]
p <- ggplot(tdat, aes(uL, Intensity)) + geom_point(aes(colour = sample,shape=sample), size=5) + geom_smooth(level=0);p

在此处输入图像描述

有没有不使用 grepl() 的快速方法?

4

1 回答 1

2

您可以%in%直接使用函数和子集,而不是grep.

tdat[tdat$sample %in% c('PCAM MCH LOW1', ...),]
于 2013-07-02T20:17:32.090 回答