2014-12-18 2 views
0

Я черчение следующего фиктивного набора данныхУказание цвета заливки в ggplot меняется другие атрибуты

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") 

Если я затем удалить хэштегом из над графиком, чтобы включить ручную цветовую схему, я получаю конфликт, который не только вызывает несоответствие между заливом и дорогой, но и удаляет затенение из моей легенды, а также большую часть форматирования графика (возвращает метки осей, и фоновая сетка).

Я понимаю, что мне нужно указать цвет пути так же, как и цвет заливки (просто не уверен, что это лучший способ сделать это), но я не понимаю, почему я отменяю большую часть общих форматов тем сюжет, а также легенда

ответ

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

+0

Спасибо за это, я думал, что это было что-то гораздо более коварным, но, похоже, это был только простой обозревает с моей стороны. Спасибо за отличный ответ. – Vinterwoo

+0

Мое удовольствие. Рад помочь. – eipi10

Смежные вопросы