在ggplot2中使用scale_colour_gradient(low ="red",high ="blue")创建对称色阶

Jon*_*ein 6 r ggplot2

scale_colour_gradient(low="red", high="blue")
Run Code Online (Sandbox Code Playgroud)

生成一个看起来大多为红色的颜色渐变.我期待red-violet-blue紫罗兰在中间,但我得到了red-still_red-violet-blue

红still_red紫色,蓝色

如何获得紫罗兰居中的渐变?

met*_*oia 8

scale_colour_gradientn(colours=c("red","violet","blue"))
Run Code Online (Sandbox Code Playgroud)


ags*_*udy 7

library(ggplot2)

dsub <- subset(diamonds, x > 5 & x < 6 & y > 5 & y < 6)
dsub$diff <- with(dsub, sqrt(abs(x-y))* sign(x-y))
(d <- qplot(x, y, data=dsub, colour=diff))

max_val <- max(abs(dsub$diff))
values <- seq(-max_val, max_val, length = 3)

d + scale_colour_gradientn(colours=c("red","violet","blue"),
                           values = values, rescaler = function(x, ...) x, oob = identity)
Run Code Online (Sandbox Code Playgroud)

并且如评论中所述,使用scale_colour_gradient2更简单

 d + scale_colour_gradient2(low='red',mid='violet',high='blue')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述