【问题标题】:How to create custom color palette to be used by scale_fill_manual()如何创建由 scale_fill_manual() 使用的自定义调色板
【发布时间】:2017-01-03 02:39:06
【问题描述】:

考虑以下代码,该代码使用紫色调色板制作条形图

library(dplyr)
library(ggplot2)

dd <- mpg %>% 
        group_by(manufacturer, cyl) %>% 
        summarise(n = n()) %>%
        ungroup() 

mm <- dd %>%
        group_by(manufacturer) %>%
        summarise(mcyl = weighted.mean(cyl, n)) %>%
        arrange(mcyl) %>%
        ungroup()

dd %>% left_join(mm) %>%
        ggplot(mapping = aes(x = reorder(manufacturer, mcyl), y = n, fill = factor(cyl))) + 
        geom_bar(stat = "identity", position = "fill") +
        coord_flip() +
        scale_fill_brewer(palette = "Purples")

问题:我怎样才能为奥迪红色(“红色”)和福特蓝色(“蓝色”)制作调色板,同时保持其他紫色(“紫色”)?

将这些红色/蓝色/紫色调色板放入变量并将其传递给scale_fill_manual()(如in this related Q&A 解释)的最方便(最好是tidyverse)方法是什么?

【问题讨论】:

  • 定义自定义,然后使用身份?
  • @zx8754 如果您可以将此扩展为答案...?
  • 抱歉,目前没有太多时间来获得完整的答案。制作一个红色、蓝色、紫色的调色板,每个 4 个,然后使用新的 myCol 列映射到汽车名称,使用该列填充?
  • 我觉得这通常相当复杂。 This answer 在热图中显示了一个示例,但方法可能与条形图类似。
  • @zx8754 想通了,谢谢

标签: r ggplot2 customization geom-bar color-palette


【解决方案1】:

完整的工作解决方案:

cyl <- sort(unique(mpg$cyl))
ncat <- length(cyl)          # 4 types of cylinders

# create palettes
library(RColorBrewer)
purples <- tibble(cyl, colr = brewer.pal(ncat, "Purples"))
reds    <- tibble(manufacturer = "audi", cyl, colr = brewer.pal(ncat, "Reds"))
blues   <- tibble(manufacturer = "ford", cyl, colr = brewer.pal(ncat, "Blues"))

# merge them with the data
dd_p <- dd %>% filter(!(manufacturer %in% c("audi", "ford"))) %>% left_join(purples)
dd_r <- dd %>% filter(manufacturer == "audi") %>% left_join(reds)
dd_b <- dd %>% filter(manufacturer == "ford") %>% left_join(blues)

gg_dd <- rbind(dd_p, dd_r, dd_b) %>%
        left_join(mm)

gg_dd %>% 
        ggplot(mapping = aes(x = reorder(manufacturer, mcyl), y = n, fill = colr)) + 
        geom_bar(stat = "identity", position = "fill") +
        coord_flip() +
        scale_fill_identity() 

【讨论】:

    猜你喜欢
    • 2021-06-15
    • 2012-08-08
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 2018-11-25
    • 2021-05-09
    相关资源
    最近更新 更多