ggplot2 - 在所有方面包括一个因素的水平

ggplot2 - include one level of a factor in all facets

我有一些由变量 'treatment' 分面包装的时间序列数据。这个 'treatment' 的水平之一是阴性对照,我想将其包含在每个方面。

例如使用 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)

如何将与主题“1”(控件)对应的数据包含在每个方面? (最好删除仅包含主题 1 数据的方面。)

谢谢!

要让某个主题出现在每个方面,我们需要为每个方面复制它的数据。我们将创建一个名为 facet 的新列,为 Subject 的每个其他值复制 Subject 1 数据,对于 Subject != 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)