Bedingt Färbung Bars in Ggplot2

Unten ist ein code für ein einfaches Beispiel dataframe und Grundstück. Ich Frage mich, wie bedingt die Farbe der Balken. Ich bin vertraut mit scale_fill_manual manuell Farbe der Balken, aber was ist, wenn ich wollte "Satisfied" im 2016 Facette, um eine andere Farbe, wenn es einen niedrigeren Prozentsatz als "Satisfied" im 2015. Vielleicht eine rote Warnung mit der Grenze oder in einer anderen Farbe wie orange (nur ein Beispiel).

Dies ist nicht das beste Beispiel, aber wenn ich ein Grundstück von Jahr-over-Jahres-top-box erreicht, dies würde nützlich sein, um Balken wechseln die Farbe, wenn Sie die Aktivität unter einen bestimmten Prozentsatz. Ich habe versucht, um das Spiel mit "colour = ifelse(Perc < 60, "orange", "green" Kombinationen, aber konnte es nicht zu funktionieren. Ich bin mir nicht sicher, wie die Struktur der ifelse Anweisung, wo es innerhalb der ggplot-code.

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)
InformationsquelleAutor Mike | 2016-04-14



One Reply
  1. 2

    Könnte am einfachsten sein, fügen Sie eine neue variable, um Ihre Daten Rahmen:

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

    Dann können Sie tun:

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

    Bedingt Färbung Bars in Ggplot2

    Wenn Sie möchten, ändern Sie die Füllung basiert auf der Bedingung, die Sie tun können:

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

    Bedingt Färbung Bars in Ggplot2

    • Danke für die Antwort, es funktioniert Super. Nur ein follow-up-Frage, die Antwort können Sie mir noch die Zierleiste, aber wie würde ich die eigentliche bar Farbe orange, anstatt nur in der Gliederung?
    • Siehe meine bearbeitete Antwort..
    • Wie kann ich eine Legende für die 2. Diagramm?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.