geom_bar和多个变量

时间:2019-03-07 03:16:54

标签: r ggplot2 facet

我在使绘图能够正常工作时遇到麻烦,我有多个分类变量,我想用它们分别上色,而在另一面上着色。但是,R会继续将相同变量的“值”(我使用melt)加在一起。当我只有一个变量时,它起作用。

这是我的一个变量图 Here is my plot with one variable

这是我的图,有两个变量,您可以看到正在发生的添加 Here is my plot with two variables, you can see the adding that is happening:

simple dataframe

这是我的代码:

library(reshape2)
library(ggplot2)

test2 <- structure(list(SampleID = c(12.19, 12.22, 13.1, 12.19, 12.22, 
13.1, 12.19, 12.22, 13.1, 12.19, 12.22, 13.1), patient = c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), type = structure(c(1L, 
1L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 2L), .Label = c("L", 
"T"), class = "factor"), timepoint = structure(c(1L, 2L, 2L, 
1L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L), .Label = c("1", "2"), class = "factor"), 
    Group = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L), .Label = "D", class = "factor"), variable = structure(c(1L, 
    1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L), .Label = c("A", 
    "B", "C", "D", "E", "F", "G", "H", "I"), class = "factor"), 
    value = c(2L, 5L, 6L, 25L, 18L, 12L, 6L, 10L, 15L, 21L, 23L, 
    33L)), .Names = c("SampleID", "patient", "type", "timepoint", 
"Group", "variable", "value"), row.names = c(NA, 12L), class = "data.frame")

ggplot(test2, aes(test2$variable, test2$value, fill=test2$timepoint)) +
  geom_bar(stat="identity", position = "dodge") +
  scale_fill_manual(values=c("rosybrown1", "steelblue2", "gray")) +
  labs(x="Category", y="Count", title = paste0("Sample ", as.character(unique(test2$patient)) , " - " , as.character(unique(test2$Group)))) +
  facet_wrap(~test2$type) +
  theme(text = element_text(size=15),
    axis.text.x = element_text(angle = 90, hjust = 1, vjust=.5, size = 7))

1 个答案:

答案 0 :(得分:0)

如果我理解正确的话,看来您只需要像这样给facet_wrap提供scales选项即可:

facet_wrap(~type, scales = "free_x")