我正在尝试使用的图形反转颜色贴图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)
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)
我们可以使用包中的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)