ggplot2 - 在所有方面都包含一个因素水平

问题描述 投票:0回答:1

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

例如使用 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 数据的方面。)

谢谢!

r ggplot2 facet-wrap
1个回答
5
投票

为了让某个主题出现在每个方面,我们需要为每个方面复制它的数据。我们将创建一个名为

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)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.