我正在绘制以下虚拟数据集
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标记和背景网格)。
我明白我需要像填充颜色一样指定路径颜色(只是不确定最好的方法),但我不明白为什么我要取消大部分的一般主题格式情节以及传奇
答案 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
。