在ggplot2

时间:2015-05-29 17:28:37

标签: 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())

我认为我可以添加这样的东西来实现给整个图形一个渐变主题的效果,然后完全用单独的填充颜色挑出几个变量。

full + scale_fill_grey() + 
scale_fill_manual(values=c('Xval1'='red', 'Xval2'='blue'))

如果有人知道如何实际这样做,我将非常感激。或者,如果你能想出一个完全显示这些数据的更好方法,我会倾向于听取建议。

1 个答案:

答案 0 :(得分:2)

由于您没有举例说明您的数据,因此无法向您提供详细的建议。但我可以在一个例子中向您展示如何实现目标(如果我正确理解您的目标......)。

我首先创建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(实际上返回十六进制代码)。

您可以使用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)

enter image description here

brewer.pal的参数是您想要的颜色数量和调色板的名称。您可以在http://colorbrewer2.org/上浏览各种调色板。