【问题标题】:Overriding Colors in Ggplot2在 Ggplot2 中覆盖颜色
【发布时间】:2022-07-04 14:00:31
【问题描述】:

我在 R 中制作了以下图表(来自:https://t-redactyl.io/blog/2016/03/creating-plots-in-r-using-ggplot2-part-9-function-plots.html

library(grid)

p9 <- ggplot(data.frame(x = c(0, 1)), aes(x = x)) +

    stat_function(fun = dnorm, args = list(0.2, 0.08),
                  aes(colour = "Mean = 0.2, Standard Deviation = 0.08"), size = 1.5) +

  stat_function(fun = dnorm, args = list(0.4, 0.1),
                  aes(colour = "Mean = 0.04, Standard Deviation = 0.01"), size = 1.5) +

    stat_function(fun = dnorm, args = list(0.3, 0.05),
                  aes(colour = "Mean = 0.3, Standard Deviation = 0.05"), size = 1.5) +

 stat_function(fun = dnorm, args = list(0.7, 0.07),
                  aes(colour = "Mean = 0.7, Standard Deviation = 0.07"), size = 1.5) + 

stat_function(fun = dnorm, args = list(0.5, 0.06),
                  aes(colour = "Mean = 0.5, Standard Deviation = 0.06"), size = 1.5) +

    scale_x_continuous(name = "Probability",
                       breaks = seq(0, 1, 0.2),
                       limits=c(0, 1)) +
    scale_y_continuous(name = "Frequency") +
    ggtitle("Normal function curves of probabilities") +
    scale_colour_brewer(palette="Accent") +
    labs(colour = "Groups") +
    theme_bw() +
    theme(axis.line = element_line(size=1, colour = "black"),
          panel.grid.major = element_line(colour = "#d3d3d3"),
          panel.grid.minor = element_blank(),
          panel.border = element_blank(), panel.background = element_blank(),
          plot.title = element_text(size = 14, family = "Tahoma", face = "bold"),
          text=element_text(family="Tahoma"),
          axis.text.x=element_text(colour="black", size = 9),
          axis.text.y=element_text(colour="black", size = 9))

p9
  • 是否可以将“黄色”更改为“红色”?

通常,我会像这样更改颜色 (Changing color of density plots in ggplot2):

require(ggplot2)
set.seed(2)
data <- rbind( data.frame(type="a", lr=rnorm(100)), data.frame(type="b", lr=rnorm(100,.5,1.2)))
m <- ggplot(data, aes(x=lr)) 
m <- m + geom_density(aes(fill=factor(type)), size=2, alpha=.4) 
m + scale_fill_manual( values = c("red","blue"))

但在我上面贴出的代码中,我不知道具体在哪里可以使用“scale_fill_manual”命令将“yellow”替换为“red”。

  • 是否有可能将“黄色”更改为“红色”?

谢谢!

【问题讨论】:

    标签: r ggplot2 data-visualization


    【解决方案1】:

    您正在使用来自RColorBrewer 的“重音”调色板中的五种颜色。您可以找到实际的颜色,如下所示:

    RColorBrewer::brewer.pal(5,"Accent")
    "#7FC97F" "#BEAED4" "#FDC086" "#FFFF99" "#386CB0"
    

    您可以代替使用scale_colour_brewer(palette="Accent"),而是定义stat_colors(将“黄色”颜色替换为“红色”,并使用names(stat_colors) 添加名称,如下所示:

    stat_colors=c("#7FC97F", "#BEAED4", "#FDC086", "red", "#386CB0")
    names(stat_colors) =  c("Mean = 0.04, Standard Deviation = 0.01",
                            "Mean = 0.2, Standard Deviation = 0.08",
                            "Mean = 0.3, Standard Deviation = 0.05",
                            "Mean = 0.5, Standard Deviation = 0.06",
                            "Mean = 0.7, Standard Deviation = 0.07"
    )
    

    然后,在你的情节中使用:

    scale_color_manual(values= stat_colors)
    

    完整代码:

    stat_colors=c("#7FC97F", "#BEAED4", "#FDC086", "red", "#386CB0")
    names(stat_colors) =  c("Mean = 0.04, Standard Deviation = 0.01",
                            "Mean = 0.2, Standard Deviation = 0.08",
                            "Mean = 0.3, Standard Deviation = 0.05",
                            "Mean = 0.5, Standard Deviation = 0.06",
                            "Mean = 0.7, Standard Deviation = 0.07"
    )
    
    p9 <- ggplot(data.frame(x = c(0, 1)), aes(x = x)) +
      
      stat_function(fun = dnorm, args = list(0.2, 0.08),
                    aes(colour = "Mean = 0.2, Standard Deviation = 0.08"), size = 1.5) +
      
      stat_function(fun = dnorm, args = list(0.4, 0.1),
                    aes(colour = "Mean = 0.04, Standard Deviation = 0.01"), size = 1.5) +
      
      stat_function(fun = dnorm, args = list(0.3, 0.05),
                    aes(colour = "Mean = 0.3, Standard Deviation = 0.05"), size = 1.5) +
      
      stat_function(fun = dnorm, args = list(0.7, 0.07),
                    aes(colour = "Mean = 0.7, Standard Deviation = 0.07"), size = 1.5) + 
      
      stat_function(fun = dnorm, args = list(0.5, 0.06),
                    aes(colour = "Mean = 0.5, Standard Deviation = 0.06"), size = 1.5) +
      
      scale_x_continuous(name = "Probability",
                         breaks = seq(0, 1, 0.2),
                         limits=c(0, 1)) +
      scale_y_continuous(name = "Frequency") +
      scale_color_manual(values= stat_colors) +
      ggtitle("Normal function curves of probabilities") +
      #scale_colour_brewer(palette="Accent") +
      labs(colour = "Groups") +
      theme_bw() +
      theme(axis.line = element_line(size=1, colour = "black"),
            panel.grid.major = element_line(colour = "#d3d3d3"),
            panel.grid.minor = element_blank(),
            panel.border = element_blank(), panel.background = element_blank(),
            plot.title = element_text(size = 14, family = "Tahoma", face = "bold"),
            text=element_text(family="Tahoma"),
            axis.text.x=element_text(colour="black", size = 9),
            axis.text.y=element_text(colour="black", size = 9))
    p9
    

    【讨论】:

    • 感谢您的回复!你能告诉我如何添加这一行的完整代码吗?当我尝试添加这行新代码时,出现以下错误:+.gg 中的错误:!无法将 ggproto 对象添加在一起。您是否忘记将此对象添加到 ggplot 对象?运行rlang::last_error() 以查看错误发生的位置。
    • 您是否忘记在 ggplot 中所有行的末尾添加+? ;添加完整代码
    猜你喜欢
    • 2014-08-02
    • 1970-01-01
    • 2020-11-28
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多