仅在ggplot中的x轴标签中显示交互x变量的一部分

时间:2018-04-26 15:54:46

标签: r ggplot2 axis-labels

我正在绘制ggplot的x轴上的交互变量,例如如下所示。由于我使用填充颜色来指示其中一个值(此处为variable),因此我只希望我的x轴标签显示另一个变量(此处为study_day)。我无法指定手动缩放(scale_x_discrete(labels = c('1', '1', '1', '2', '2', '2')),因为我的study_day值在每个方面可能会有所不同,如本例所示。如何指示仅使用study_day

标记x轴
set.seed(1)
df <- data.frame(variable = rep(c('A', 'B', 'C'), 8),
                 study_day = rep(c('1', '2'), 12),
                 ID = rep(c('W', 'X', 'Y', 'Z'), 6),
                 value = rnorm(24))

ggplot(df, aes(interaction(variable, study_day), value))+
  geom_point(shape = 21, aes(fill = variable))+
  facet_wrap(~ID, scales = 'free')

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以编写一个make_labels()函数,从ggplot2生成的标签中提取研究日:

library(stringr)

make_labels <- function(labels) {
  result <- str_split(labels, "\\.")
  unlist(lapply(result, function(x) x[2]))
}

set.seed(1)
df <- data.frame(variable = rep(c('A', 'B', 'C'), 8),
                 study_day = rep(c('1', '2'), 12),
                 ID = rep(c('W', 'X', 'Y', 'Z'), 6),
                 value = rnorm(24))

ggplot(df, aes(interaction(variable, study_day), value))+
  geom_point(shape = 21, aes(fill = variable))+
  facet_wrap(~ID, scales = 'free') +
  scale_x_discrete(labels = make_labels, name = "study day")

enter image description here