ggplot单个变量的brebrewer标度的逆序

时间:2019-04-29 16:09:35

标签: r ggplot2 colorbrewer

library(tidyverse)
library(RColorBrewer)
mtcars %>% 
  count(cyl) %>% 
  ungroup() %>% 
  ggplot(aes(cyl, n, color = "A")) + 
  geom_line(size = 2) + 
  # scale_color_brewer(palette = "Accent", guide = "none") +  # line 8
  scale_color_brewer(palette = "Accent", direction = -1, guide = "none") + 
  NULL

我认为ggplot的direction = -1参数会颠倒色标。无论我打开还是关闭此参数,我仍然会看到以下相同的图。

direction1

我认为取消参数将使我看到上面的图形,因为绿色是Accent的第一种颜色。如果我打开direction = -1参数,我期望geom_line()使用最后的Accent颜色(深灰色),但这不会发生。

accent

如何正确反转色标以获得深灰色首先显示?我知道我可以简单地使用geom_line(aes(color = "dark grey")),但我想回答这个问题,而不是“最简单的解决方案”。

1 个答案:

答案 0 :(得分:1)

direction参数采用分配给刻度的颜色并将其翻转(因此分配给刻度中最后一个值的颜色分配给第一个)。不会更改将哪些颜色分配给刻度尺。您不会看到任何效果,因为颜色只有一个可能的值,因此反转比例不会引起任何变化。比较这两个示例:

ggplot(diamonds, aes(x = price, fill = cut)) +
    geom_histogram(position = "dodge", binwidth = 1000) +
    scale_fill_brewer(palette='Accent')

enter image description here

ggplot(diamonds, aes(x = price, fill = cut)) +
    geom_histogram(position = "dodge", binwidth = 1000) +
    scale_fill_brewer(palette='Accent', direction = -1)

enter image description here

您会看到选择的颜色是相同的,只是它们分配给cut的顺序改变了。

如果要更改所选颜色的顺序,则可以使用scale_color_manual,使用brewer.pal传递调色板,然后根据需要翻转和/或子集化调色板:

mtcars %>% 
    count(cyl) %>% 
    ungroup() %>% 
    ggplot(aes(cyl, n, color = "A")) + 
    geom_line(size = 2) + 
    scale_color_manual(values = rev(brewer.pal(8, 'Accent')))

enter image description here