ggplot2: Fix colors to factor levels

前端 未结 4 1999
借酒劲吻你
借酒劲吻你 2020-12-10 12:50

I\'m working on a larger project for which I am creating several plots in ggplot2. The plots are concerned with plotting several different outcomes across several different

4条回答
  •  一整个雨季
    2020-12-10 13:26

    You could make a custom plot function (including scale_fill_manual and reasonable default colours) in order to avoid repeating code:

    library(ggplot2)
    custom_plot <- function(.data,
      colours = c("A" = "green", "B" = "blue", "C" = "red", "D" = "grey"))  {
      ggplot(.data, aes(x=Type, y=Value, fill= Type)) + geom_bar(stat="identity") +
       scale_fill_manual(values = colours)
    }
    
    df1 <- data.frame(Value=c(40, 20, 10, 60), Type=c("A", "B", "C", "D"))
    df2 <- data.frame(Value=c(40, 20, 60), Type=c("A", "B", "D"))
    df3 <- data.frame(Value=c(40, 20, 10, 60), Type=c("A", "B", "C", "D"))
    df3$Type <- factor(df3$Type, levels=c("D", "C", "B", "A"), ordered=TRUE)
    
    custom_plot(df1)
    custom_plot(df2)
    custom_plot(df3)
    

提交回复
热议问题