代码之家  ›  专栏  ›  技术社区  ›  SantiClaus

scale_fill_manual()不会更改图例上的颜色吗?

  •  0
  • SantiClaus  · 技术社区  · 7 年前

    当我使用 scale_fill_manual() 使用ggplot并指定某些值时,图例上的值都表示黑色形状,而不是我在代码中指定的值。例如,如果我指定 scale_fill_manual(values = c("red",NA)) ,我希望图例显示红色形状和黑色未填充形状,但两个形状都是黑色的。还是要用这种方式自定义图例?

    日期数据:

    c(12/31/2020,12/31/2021,12/31/2022,12/31/2023,12/31/2024,12/31/2025,12/31/2026
    12/31/2027,12/31/2028,12/31/2029,12/31/2030,12/31/2031,12/31/2032,12/31/2033
    12/31/2034,12/31/2035,12/31/2036,12/31/2037,12/31/2038,12/31/2039,12/31/2040
    12/31/2041,12/31/2042,12/31/2043,12/31/2044,12/31/2045,12/31/2046,12/31/2047
    12/31/2048,12/31/2049,12/31/2050,12/31/2051,12/31/2052,12/31/2053,12/31/2054
    12/31/2055,12/31/2056,12/31/2057,12/31/2058,12/31/2059,12/31/2060,12/31/2061
    12/31/2062,12/31/2063,12/31/2064,12/31/2065,12/31/2066,12/31/2067,12/31/2068
    12/31/2069)
    

    示例代码和输出:

    dat <- read.csv("Dates.csv")
    a <- data.frame(date = dat[1:15,1],income = c(rep(10000,5),rep(40000,5),rep(100000,5)),
                    family = c(rep("true",5),rep("false",5),rep("NA",5)),
                    status = c(rep("low",5),rep("medium",5),rep("high",5)),
                    state = c(rep("TX",5),rep("PA",5),rep("CA",5)))
    a$date <- as.Date(a$date,format = "%m/%d/%Y")
    ggplot(a,aes(x = date,y = income)) +
      geom_point(aes(color = state,fill = status,shape = family),size = 1) +
      scale_fill_manual(values = c("red","green",NA)) +
      scale_color_manual(values = c("red","green","brown")) + 
      scale_shape_manual(values = c(22,21,25))
    

    结果:

    enter image description here

    问题:

    为什么图例的填充部分(状态)对于所有形状都是黑色的?如何修复/自定义该部件?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Luke Hayden    7 年前

    图例看起来仍在使用默认的点形状。将此添加到代码末尾以覆盖它:

    +  guides(fill = guide_legend(override.aes = list(shape = 21)))
    
    推荐文章