Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot2颜色顺序don';不符合饼图顺序_R_Ggplot2_Colors - Fatal编程技术网

R ggplot2颜色顺序don';不符合饼图顺序

R ggplot2颜色顺序don';不符合饼图顺序,r,ggplot2,colors,R,Ggplot2,Colors,我的问题应该是直截了当的,但我不知道如何解决它。当我做一个标准的饼图来查看R生成的颜色顺序时,我得到了一个颜色顺序,但是当我在ggplot中使用相同的彩虹时,我得到了一个不同的顺序。下面是一个可复制的示例: require(ggplot2) myRainbow <- rainbow(7) pie(rep(1, 7), labels=letters[1:7], col = myRainbow) x11() ggplot( data.frame(x = 1:7, y = 9:3), aes(x

我的问题应该是直截了当的,但我不知道如何解决它。当我做一个标准的饼图来查看R生成的颜色顺序时,我得到了一个颜色顺序,但是当我在ggplot中使用相同的彩虹时,我得到了一个不同的顺序。下面是一个可复制的示例:

require(ggplot2)
myRainbow <- rainbow(7)
pie(rep(1, 7), labels=letters[1:7], col = myRainbow)
x11()
ggplot( data.frame(x = 1:7, y = 9:3), aes(x = x, y = y, colour = myRainbow[1:7],size = 4,show.legend=FALSE) ) + 
    geom_point() + scale_colour_manual(values=myRainbow, name="Colour_Test", labels=letters[1:7], breaks=myRainbow) +
    guides(size=FALSE)
require(ggplot2)

myRainbow如果指定“原样”,则得到相同的颜色顺序:

请参见
?AsIs
I


或者,您可以执行
scale\u color\u manual(values=setNames(myRainbow,myRainbow))
将正确的值映射到正确的级别

谢谢,行得通。你知道为什么你必须这样指定它吗?我能想到的唯一一件事就是RColorBrewer以某种方式更改了它。我不知道为什么内部会更改顺序,但是
aes(color=myRainbow[1:7])
不会将
\000000
解释为黑色,而是一个字符值<代码>aes(color=I(myRainbow[1:7]))
将其视为黑色。或者,为了防止顺序发生更改,可以将命名的字符向量传递给scale\ux的
values
参数。这样,您还可以确保字符值
#000000
映射到颜色
#000000
plot(y~x, data.frame(x = 1:7, y = 9:3), col = myRainbow[1:7], pch=19, cex=3)
ggplot( data.frame(x = 1:7, y = 9:3), aes(x = x, y = y, colour = I(myRainbow[1:7]), size = 4,show.legend=FALSE) ) + 
    geom_point()