【问题标题】:How do I add Wes Anderson Colors to my GGPlot?如何将 Wes Anderson 颜色添加到我的 GGPlot?
【发布时间】:2020-04-12 04:17:33
【问题描述】:

我想使用 wesanderson 软件包中的“GrandBudapest1”调色板。

我正在处理一个有 20 个离散值的图表,但调色板只有 9 种颜色。

文档说我可以使用此代码创建更多颜色:

pal <- wes_palette(21, name = "GrandBudapest1", type = "continuous")

我想将该调色板应用于我的 ggplot 图表。我已经尝试了一些方法,但它们没有奏效。

# organize the data
tdf_winners <- read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-04-07/tdf_winners.csv')

wins.by.winner_name <-
  tdf_winners %>% 
  count(winner_name) %>% 
  arrange(-n) %>% 
  mutate(total_wins = n) %>% 
  select(-n)

tdf_winners <-
  tdf_winners %>% 
  filter(start_date > ymd("1913-01-01")) %>%
  left_join(wins.by.winner_name, by = "winner_name") %>% 
    mutate(winner_name_lbl = ifelse(total_wins == 1, "One Time Winner",
                                  winner_name))

# create the graphic

gg <-
  tdf_winners %>% 
  ggplot(aes(edition, time_overall, fill = winner_name_lbl)) +
  geom_col()

gg + 
  scale_fill_paletteer_d("wesanderson::GrandBudapest1")

我也试过gg + scale_fill_paletteer_d(pal)

如何将我的插值调色板应用到我的 ggplot 图表?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    几个点。味觉有 4 个值,而不是 9 个,winner_name_lbl 有 21 个级别。

    不管怎样,我们可以使用只需要使用scale_fill_manual

    library(wesanderson)
    library(ggplot2)
    ggplot(tdf_winners, aes(x = edition, y = time_overall, fill = winner_name_lbl)) + geom_col() +
      scale_fill_manual(values = wes_palette(21, name = "GrandBudapest1", type = "continuous"), name = "") +
      theme(legend.position="bottom")
    

    【讨论】:

    • 哇!我的印象是 scale_fill_manual 只适用于十六进制。谢谢。
    • 你是对的,它只适用于十六进制。但是wes_palatte 返回一个类palatte 的对象,它有一个特殊的print 方法来绘制颜色。该对象实际上包含所有的十六进制。试试str(wes_palette(21, name = "GrandBudapest1", type = "continuous"))看看。
    猜你喜欢
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 2017-12-23
    • 1970-01-01
    相关资源
    最近更新 更多