这可能是一个非常小众的问题,但我正在寻找一种方法来自动插入标签行的标题名称。
我查看了大量药物与药物相互作用的多因素数据,一种节省空间的好格式是使用 x 轴上的行中的 - 和 + 符号作为标题,以显示存在哪些药物/因素,以及然后为每行 -/+ 符号指定一个标题,以指示相应的因子。我正在努力解决的是一些精确/不那么黑客的插入方式?
下面是我的意思的一个例子 - 我刚刚在 powerpoint 中手动粘贴了此处的标题(以红色突出显示),但如果有更精确的方法来执行此操作,那就太好了!预先感谢您的任何建议。
df <- data.frame(drug_a = rep(c("untreated", "untreated", "treated", "treated"), 4),
drug_b = rep(c("untreated", "treated", "untreated", "treated"), 4),
group = rep(c("a", "b", "c", "d"), 4),
condition_a = c(rep(c("w"), 8), rep(c("x"), 8)),
condition_b = c(rep(c("y"), 4), rep(c("z"), 4), rep(c("y"), 4), rep(c("z"), 4)),
reading = c(1:16))
plusminus.labels <- c("-\n-", "-\n+", "+\n-", "+\n+")
names(plusminus.labels) <- c("a", "b", "c", "d")
ggplot(df, aes(x=group, y=reading)) +
geom_bar(position = "dodge", stat = "identity")+
facet_grid(condition_a~condition_b) +
scale_x_discrete(labels = plusminus.labels)
您可以将药物名称添加到标签中,并将文本与分隔符右对齐:
plusminus.labels <- c("Drug A -\n Drug B -", "-\n+", "+\n-", "+\n+")
names(plusminus.labels) <- c("a", "b", "c", "d")
library(marquee)
ggplot(df, aes(x=group, y=reading)) +
geom_bar(position = "dodge", stat = "identity")+
facet_grid(condition_a~condition_b) +
scale_x_discrete(labels = plusminus.labels)+
theme(
axis.text.x = element_text(hjust = 1)
)