2016-04-06 3 views
0

ich eine Grafik zu erstellen bin versucht, den folgenden Datenrahmen mit:In Grenzen um einzelne Balkendiagramm Plots basierend auf einer Säule: ggplot2

df1 <- structure(list(country.name = structure(c(4L, 11L, 10L, 2L, 1L, 
     3L, 8L, 5L, 7L, 9L, 6L), .Label = c("Austria", "Belgium", "Czech Republic", 
     "Denmark", "France", "Germany", "Netherlands", "Norway", "Poland", 
     "Sweden", "Switzerland"), class = "factor"), level = c(2L, 2L, 
     2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L), no.regions = c(5L, 7L, 8L, 
     11L, 9L, 8L, 7L, 16L, 12L, 15L, 14L), min_result = c(42.59, 33.57, 
     43.1, 38.46, 41.76, 44.05, 41.67, 36.32, 36.18, 42.79, 39.91), 
     max_result = c(50.24, 46.56, 58.24, 57.41, 61.07, 64.56, 
     63.25, 58.19, 59.14, 69.19, 67.11), diff = c(7.65, 12.99, 
     15.14, 18.95, 19.31, 20.51, 21.58, 21.87, 22.96, 26.4, 27.2 
     ), RD = c(-0.07, 0.131, -0.091, -0.153, -0.172, 0.203, -0.166, 
     0.145, -0.228, -0.266, -0.261), RDCI_lower = c(-0.21, -0.028, -0.194, -0.328, -0.376, 0.076, -0.315, 0.075, -0.407, -0.348, 
     -0.347), RDCI_upper = c(0.07, 0.29, 0.012, 0.021, 0.031, 
     0.331, -0.017, 0.216, -0.049, -0.184, -0.175), RDpvalue = c(0.3237, 
     0.1113, 0.08, 0.0829, 0.1017, 0.0023, 0.0299, 0, 0.0149, 
     0, 0), diff_order = structure(1:11, .Label = c("Denmark", 
     "Switzerland", "Sweden", "Belgium", "Austria", "Czech Republic", 
     "Norway", "France", "Netherlands", "Poland", "Germany"), class = "factor", scores = structure(c(19.31, 
     18.95, 20.51, 7.65, 21.87, 27.2, 22.96, 21.58, 26.4, 15.14, 
     12.99), .Dim = 11L, .Dimnames = list(c("Austria", "Belgium", 
     "Czech Republic", "Denmark", "France", "Germany", "Netherlands", 
     "Norway", "Poland", "Sweden", "Switzerland"))))), .Names = c("country.name", 
     "level", "no.regions", "min_result", "max_result", "diff", "RD", 
     "RDCI_lower", "RDCI_upper", "RDpvalue", "diff_order"), row.names = c(NA, 
     -11L), class = "data.frame") 

Meine erste Graph ist:

a <- ggplot(df1, aes((x=diff_order), y=diff,fill=as.factor(level))) + 
    geom_bar(stat="identity") + 
    xlab("Country") + 
    theme_classic() + 
    coord_flip() + 
    scale_fill_manual(values=c("#2B2B2B", "#555555"),name="NUTS level") + 
    ggtitle("All") + 
    theme(plot.title = element_text(hjust = 0)) + 
    theme(axis.title.x = element_blank()) + 
    theme(axis.text=element_text(size=9), 
     axis.title=element_text(size=10,face="bold")) 

a 

Nun, ich Ich möchte Ränder um meine Balkendiagramm-Plots herum hinzufügen, je nachdem, ob RDpvalue < 0.05 ist (um visuell die Signifikanz anzuzeigen).

Ist es möglich, dies in R zu tun?

Antwort

0

Verwenden Sie einfach die color Ästhetik:

df1$color_grp <- ifelse(df1$RDpvalue < 0.05,'Yes','No') 

a <- ggplot(df1, 
      aes(x=diff_order, 
       y=diff, 
       fill=as.factor(level), 
       color = color_grp)) + 
    geom_bar(stat="identity") + 
    xlab("Country") + 
    theme_classic() + 
    coord_flip() + 
    scale_fill_manual(values=c("#2B2B2B", "#555555"),name="NUTS level") + 
    ggtitle("All") + 
    theme(plot.title = element_text(hjust = 0)) + 
    theme(axis.title.x = element_blank()) + 
    theme(axis.text=element_text(size=9), 
      axis.title=element_text(size=10,face="bold")) 

a 
+0

Große - @joran. Aber wie kann ich diese Legende (nicht die mit Füllung) aus meinem Diagramm entfernen? Ich habe + guides (color = FALSE) versucht ... aber ich erhalte den Fehler Fehler in ggtitle ("All") + Thema (plot.title = element_text (hjust = 0)) +: nicht-numerisches Argument zum binären Operator Was ist schief gelaufen? –

+0

@ KT_1 Hinzufügen von 'guides (color = FALSE)' hat gut für mich funktioniert. Sie haben irgendwo einen Syntaxfehler. Beachten Sie, dass ich den Code in Ihrer ursprünglichen Frage bearbeitet habe, da er einen Syntaxfehler enthielt, von dem ich annahm, dass er ein Tippfehler war. – joran

+0

Ja, @joran - Problem gelöst. Danke für die Bearbeitung. –

Verwandte Themen