Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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中的渐变颜色方案_R_Ggplot2 - Fatal编程技术网

R 将单个颜色指定给ggplot2中的渐变颜色方案

R 将单个颜色指定给ggplot2中的渐变颜色方案,r,ggplot2,R,Ggplot2,我试图找到在R中的ggplot2中显示此堆叠面积图的最佳方法。我的问题是在保持图表可读性的同时,我试图显示的变量数量。我现在有17个不同的变量,我需要保留在图表中,但有一些我特别想挑出。目前我的代码是: full <- ggplot(data=df, aes(x=Year, y=value) + geom_area(aes(fill=variable)) + theme(legend.position='right') + theme(legend.title=element_blank(

我试图找到在R中的ggplot2中显示此堆叠面积图的最佳方法。我的问题是在保持图表可读性的同时,我试图显示的变量数量。我现在有17个不同的变量,我需要保留在图表中,但有一些我特别想挑出。目前我的代码是:

full <- ggplot(data=df, aes(x=Year, y=value) +
geom_area(aes(fill=variable)) +
theme(legend.position='right') +
theme(legend.title=element_blank())

如果有人知道如何做到这一点,我将不胜感激。或者,如果你能想出一个更好的方法来完全显示这些数据,我会乐于听取建议。

因为你没有给出数据的示例,所以不可能给出详细的建议。但我可以用一个例子向你展示如何实现你的目标(如果我正确理解了你的目标…)

我首先创建som数据和绘图,如您的帖子所示:

df <- data.frame(Year=as.factor(rep(2000:2005,each=9)),
                 value=runif(6*9,0,10),
                 variable=as.factor(rep(1:9,times=6)))
full <- ggplot(data=df, aes(x=Year, y=value)) +
                  geom_area(aes(fill=variable,group=variable)) +
                  theme(legend.title=element_blank())
如您所见,可以使用命名颜色、十六进制代码或
rgb
(实际返回十六进制代码)

您也可以使用ColorBrewer,它可以覆盖出色的调色板,而不是自己挑选颜色。与上面的
gray.colors
类似,可以使用命令
brewer.pal
创建调色板:

pal <- brewer.pal(9,"Set1")
my_scale <- gray.colors(n=9,start=0.2,end=0.8)
my_scale[c(4,7,8)] <- pal[1:3]
full + scale_fill_manual(values=my_scale)

pal如果您为df提供一个可重复性最低的数据集,您将得到更多的帮助。很抱歉没有包括这一点,对于社区来说还是很新的,而且一切都是如何工作的。谢谢很抱歉没有包含可复制的数据集(一般来说,ggplot和stackoverflow都是新的)。我应该考虑在外部创建一个调色板作为向量,然后重新分配它的特定元素。谢谢你的帮助!
my_scale <- gray.colors(n=9,start=0.2,end=0.8)
my_scale[c(4,7,8)] <- c("red", rgb(0,0.8,0.6), "#ff7f00")
full + scale_fill_manual(values=my_scale)
pal <- brewer.pal(9,"Set1")
my_scale <- gray.colors(n=9,start=0.2,end=0.8)
my_scale[c(4,7,8)] <- pal[1:3]
full + scale_fill_manual(values=my_scale)