将单个颜色分配给 ggplot2 中的渐变配色方案
Assigning Individual Colors to a Gradient Color Scheme in 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())
我想我可以添加类似这样的东西来实现给整个图表一个渐变主题的效果,然后用完全不同的填充颜色挑出几个变量。
full + scale_fill_grey() +
scale_fill_manual(values=c('Xval1'='red', 'Xval2'='blue'))
如果有人知道如何实际执行此操作,我将不胜感激。或者,如果您能想出一种更好的方式来完全显示这些数据,我愿意听取建议。
由于你没有给出你的数据的例子,所以不可能给你详细的建议。但我可以在示例中向您展示如何实现您的目标(如果我正确理解您的目标...)。
我首先按照您的 post:
创建 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())
不需要theme(legend.position='right')
,因为这是默认设置。请注意,我将美学 group
添加到 geom_area
。如果缺失,ggplot
不知道哪些值属于同一条曲线并生成一个空图。
现在我分两步手动创建比例。首先,我创建了一个 9 级的灰度等级,因为我在 df$variable
中有九个级别。然后我修改了其中的几个级别:
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)
如您所见,可以使用命名颜色、十六进制代码或 rgb
(实际上是 returns 十六进制代码)。
除了自己挑选颜色,您还可以使用 colourbrewer,它可以提供出色的调色板。类似于上面的 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)
brewer.pal
的参数是您想要的颜色数量和调色板的名称。您可以在 http://colorbrewer2.org/.
上浏览各种调色板
我试图找到在 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())
我想我可以添加类似这样的东西来实现给整个图表一个渐变主题的效果,然后用完全不同的填充颜色挑出几个变量。
full + scale_fill_grey() +
scale_fill_manual(values=c('Xval1'='red', 'Xval2'='blue'))
如果有人知道如何实际执行此操作,我将不胜感激。或者,如果您能想出一种更好的方式来完全显示这些数据,我愿意听取建议。
由于你没有给出你的数据的例子,所以不可能给你详细的建议。但我可以在示例中向您展示如何实现您的目标(如果我正确理解您的目标...)。
我首先按照您的 post:
创建 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())
不需要theme(legend.position='right')
,因为这是默认设置。请注意,我将美学 group
添加到 geom_area
。如果缺失,ggplot
不知道哪些值属于同一条曲线并生成一个空图。
现在我分两步手动创建比例。首先,我创建了一个 9 级的灰度等级,因为我在 df$variable
中有九个级别。然后我修改了其中的几个级别:
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)
如您所见,可以使用命名颜色、十六进制代码或 rgb
(实际上是 returns 十六进制代码)。
除了自己挑选颜色,您还可以使用 colourbrewer,它可以提供出色的调色板。类似于上面的 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)
brewer.pal
的参数是您想要的颜色数量和调色板的名称。您可以在 http://colorbrewer2.org/.