ggplot2 - 在所有方面包含一个因素的一个级别

Cam*_*am 5 r ggplot2 facet-wrap

我有一些由变量“处理”包裹的时间序列数据。这种“治疗”的因素之一是阴性对照,我想将其包含在每个方面。

例如使用 R 数据集“Theoph”:

data("Theoph")


head(Theoph)

Subject   Wt Dose Time  conc
1       1 79.6 4.02 0.00  0.74
2       1 79.6 4.02 0.25  2.84
3       1 79.6 4.02 0.57  6.57
4       1 79.6 4.02 1.12 10.50
5       1 79.6 4.02 2.02  9.66
6       1 79.6 4.02 3.82  8.58

Theoph$Subject <- factor(Theoph$Subject, levels = unique(Theoph$Subject)) # set factor order

ggplot(Theoph, aes(x=Time, y=conc, colour=Subject)) +
  geom_line() +
  geom_point() +
  facet_wrap(~ Subject)
Run Code Online (Sandbox Code Playgroud)

如何将与主题“1”(对照)相对应的数据包含在每个方面中?(理想情况下,删除仅包含受试者 1 数据的方面。)

谢谢你!

Gre*_*gor 4

为了让某个主题出现在每个方面,我们需要为每个方面复制它的数据。我们将创建一个名为 的新列facet,为主题的每个其他值复制主题 1 数据,并将主题 != 1 设置facet为等于Subject

every_facet_data = subset(Theoph, Subject == 1)
individual_facet_data = subset(Theoph, Subject != 1)
individual_facet_data$facet = individual_facet_data$Subject

every_facet_data = merge(every_facet_data,
                                                 data.frame(Subject = 1, facet = unique(individual_facet_data$facet)))

plot_data = rbind(every_facet_data, individual_facet_data)

library(ggplot2)
ggplot(plot_data, aes(x=Time, y=conc, colour=Subject)) +
  geom_line() +
  geom_point() +
  facet_wrap(~ facet)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述