在ggplot中指定填充颜色正在改变其他属性

时间:2014-12-18 20:10:15

标签: r ggplot2

我正在绘制以下虚拟数据集

X<-c(1,3,5,6,7,2,1,8,8)
Y<-c(2,3,1,6,4,5,3,3,4)
Date<-c('2005','2006','2007','2005','2006','2007','2005','2006','2007')
Size<-c(20,30,40,20,10,40,20,19,15)
Group<-c("North","North","North","East","East","East","West","West","West")

DF<-data.frame(X,Y,Date,Size,Group)

我想使用ggplot创建一个气泡图,其代码如下:

ggplot(DF,aes(x=X, y=Y, size=Size, label=Date,fill=Group),legend=FALSE)+
geom_path(size=0.3,aes(colour=Group))+
geom_point( color='black', shape=21,alpha=0.5)+
geom_text(size=2)+
ggtitle("My Title")+
theme_bw()+
scale_size(range = c(5, 20),name="Legend Title")+
#scale_fill_manual(values=cbPalette)
theme(panel.grid.minor=element_blank(),
panel.grid.major=element_blank(),
axis.text.x=element_blank(),
legend.key=element_rect(colour='black',size=1),#Increase thickness of legend border
legend.text=element_text(size=10, face='bold'),
legend.title=element_text(size=12,face='bold'),
axis.text.y=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
axis.ticks.x=element_blank(),
axis.ticks.y=element_blank())+
guides(size=guide_legend(override.aes=list(fill='black')),color=guide_legend(overide.aes=list(alpha=0.9)))#last bit colors in circles in legend

上面的代码工作正常。它创建了一个具有以下功能的气泡图:

-Bubble fill and path color coded by group
-Corresponding legend with correct colors for both fill and lines
-Bubble legend with grey shaded in color
-Preserves all the formatting options specified in above code

但是如果想要指定填充和线条颜色来制作更加色盲友好的调色板

# CB palette with grey:
cbPalette <- c("#999999", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")

如果我从上面的绘图代码中删除主题标签以包含手动配色方案,我会发生冲突,不仅会导致填充和路径不匹配,还会从我的图例以及大部分内容中删除阴影。绘图格式化(带回轴标签,tic标记和背景网格)。

我明白我需要像填充颜色一样指定路径颜色(只是不确定最好的方法),但我不明白为什么我要取消大部分的一般主题格式情节以及传奇

1 个答案:

答案 0 :(得分:1)

我认为您只需添加scale_colour_manual即可获得路径与填充之间的匹配。我已经更改了调色板,以便更容易看到发生了什么。仅使用调色板的前三种颜色,因为Group只有三个级别。由于theme行之后没有+,您的scale_fill_manual()格式消失了,因此一旦取消注释该行,主题语句就不会包含在图表中。

  cbPalette1 <- c("yellow", "pink", "green", "black", "red", "blue", "#D55E00", "#CC79A7")

  ggplot(DF,aes(x=X, y=Y, size=Size, label=Date,fill=Group),legend=FALSE)+
  geom_path(size=0.3,aes(colour=Group))+
  geom_point( color='black', shape=21,alpha=0.5)+
  geom_text(size=2)+
  ggtitle("My Title")+
  theme_bw()+
  scale_size(range = c(5, 20),name="Legend Title")+
  scale_fill_manual(values=cbPalette1) +  
  scale_colour_manual(values=cbPalette1) +  # I ADDED THIS LINE
  theme(panel.grid.minor=element_blank(),
        panel.grid.major=element_blank(),
        axis.text.x=element_blank(),
        legend.key=element_rect(colour='black',size=1),#Increase thickness of legend border
        legend.text=element_text(size=10, face='bold'),
        legend.title=element_text(size=12,face='bold'),
        axis.text.y=element_blank(),
        axis.title.x=element_blank(),
        axis.title.y=element_blank(),
        axis.ticks.x=element_blank(),
        axis.ticks.y=element_blank())+
  guides(size=guide_legend(override.aes=list(fill='black')),
         color=guide_legend(overide.aes=list(alpha=0.9)))#last bit colors in circles in legend

另请注意,即使您在fill='black'内指定了override.aes,您图例中的气泡也会显示为灰色,因为您在alpha=0.5内指定了geom_point。要获得黑色传奇气泡,请在alpha=1内添加override.aes

enter image description here