2016-04-14 11 views
1

Aşağıda basit bir örnek veri çerçevesi ve çizim için bir kod yer almaktadır. Barları nasıl şartlı olarak renklendirdiğimi merak ediyorum. Barları el ile renklendirmek için scale_fill_manual aşina olduğumu biliyorum, ancak 2016 fasetinde içinde daha düşük bir yüzdeyse, farklı bir renk olmasını istiyordum. Belki kırmızı uyarı sınırı veya turuncu gibi farklı bir renk (sadece bir örnek).Koşullu Renklendirme Çubukları Ggplot2

Bu en iyi örnek değil, ancak yıl boyunca top box puanlarının bir grafiği varsa, bu belirli bir yüzde altına düştüğünde çubukların rengini değiştirmek yararlı olacaktır. "colour = ifelse(Perc < 60, "orange", "green" kombinasyonları ile uğraşmayı denedim, ancak işe yaramaya gelemedim. ifelse ifadesinin nasıl yapılandırılacağını veya ggplot kodunun içine yerleştirileceğini bilmiyorum. Eğer değiştirmek istiyorsanız

ggplot(df.prop, aes(x = Service, y = Perc, fill = Service, colour=colour)) + 
    geom_bar(stat = "identity", position = "dodge") + 
    geom_text(aes(label = percent(Perc)), position = position_dodge(width = 1), 
      vjust = 1.5, size = 3, colour="black") + 
    scale_y_continuous(labels = percent) + 
    facet_grid(~ Year) + 
    scale_colour_identity() 

enter image description here

:

df.prop$colour <- ifelse(df.prop$Service == "Satisfied" & df.prop$Perc < 0.6, "orange", NA) 

Sonra yapabilirsiniz:

Year<-c(2015, 2015, 2015, 2015, 2015, 2016, 2016, 2016, 2016, 2016) 

Service<-c("Satisfied", "Satisfied", "Satisfied", "Dissatisfied", "Dissatisfied", 
      "Satisfied", "Satisfied", "Dissatisfied", "Dissatisfied", "Dissatisfied") 

df <- data.frame(Year, Service) 

library(dplyr) 
df.prop <- df %>% 
      count(Year, Service) %>% 
      mutate(Perc = prop.table(n)) 

library(ggplot2) 
ggplot(df.prop, aes(x = Service, y = Perc, fill = Service)) + 
     geom_bar(stat = "identity", position = "dodge") + 
     geom_text(aes(label = percent(Perc)), position = position_dodge(width = 1), 
       vjust = 1.5, size = 3) + 
     scale_y_continuous(labels = percent) + 
     facet_grid(~ Year) 

cevap

1

veri çerçevesine yeni bir değişken eklemek için en kolay olabilirdi Yapabileceğiniz koşullara göre doldurun:

012 cevap için
df.prop$fill <- ifelse(df.prop$Service == "Satisfied" & df.prop$Perc < 0.6, "orange", ifelse(df.prop$Service == "Satisfied" & df.prop$Perc >= 0.6, "#00BFC4", "#F8766D")) 

ggplot(df.prop, aes(x = Service, y = Perc, fill = fill)) + 
    geom_bar(stat = "identity", position = "dodge") + 
    geom_text(aes(label = percent(Perc)), position = position_dodge(width = 1), 
      vjust = 1.5, size = 3) + 
    scale_y_continuous(labels = percent) + 
    facet_grid(~ Year) + 
    scale_fill_identity() 

enter image description here

+0

sayesinde iyi çalışıyor. Tek bir takip sorusu, cevap renkli kenarlığı eklememi sağlıyor, ancak gerçek çubuk rengini sadece anahat yerine turuncuya nasıl değiştiririm? – Mike

+0

@Mike Düzenlenmiş cevabımı görün .. – beetroot