如何反转ggplot2的默认调色板

Ben*_*Ben 3 r ggplot2

我正在尝试使用的图形反转颜色贴图scale_color_brewer(direction = -1).但是,这样做也会改变调色板.

library(ggplot2)
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species))+geom_point()

# reverse colors
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species))+geom_point()+
  scale_color_brewer(direction = -1)
Run Code Online (Sandbox Code Playgroud)

潜在解决方案

ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species))+geom_point()+
scale_color_brewer(direction = -1, palette = ?)
Run Code Online (Sandbox Code Playgroud)

Pol*_*eer 7

ggplot使用的默认调色板是scale_color_hue.

ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species))+geom_point()
Run Code Online (Sandbox Code Playgroud)

相当于

ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) +
  geom_point() + scale_color_hue(direction = 1)
Run Code Online (Sandbox Code Playgroud)

direction = -1确实扭转了颜色.但是,您需要调整色调轮中的起点,以便以相反的顺序获得相同的三种颜色.

ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species))+geom_point()+
  scale_color_hue(direction = -1, h.start=90)
Run Code Online (Sandbox Code Playgroud)

每种颜色将色调指针移动30度.所以我们将起点设定为90.

顺便说一下,为了让scale_colour_brewer分类变量工作,你需要设置type = 'qual':

ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species))+geom_point()+
  scale_color_brewer(type = 'qual', palette = 'Dark2')
Run Code Online (Sandbox Code Playgroud)


www*_*www 6

我们可以使用包中的hue_pal函数scales来获取颜色的名称。之后,使用scale_color_manual指定颜色rev以反转颜色的顺序hue_pal

library(ggplot2)
library(scales)

# Get the colors with 3 classes
cols <- hue_pal()(3)

# Plot the data and reverse the color
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) +
  geom_point() +
  scale_color_manual(values = rev(cols))
Run Code Online (Sandbox Code Playgroud)