2017-05-11 3 views
1

Ich versuche, farbige Kreise in die Lücken einzufügen, in denen keine Arten vorhanden sind, um deutlich zu zeigen, welche Arten in der Gruppe fehlen.Gefüllten Kreis für 0% Beobachtungen hinzufügen

library(ggplot2) 

Species <- c("Anoplolepis sp1", "Anoplolepis custodiens", "Camponotus sp1", "Camponotus fulvopilosis", "Pheidole megacephala", "Anoplolepis custodiens", "Camponotus sp1", "Camponotus fulvopilosis", "Anoplolepis sp1", "Anoplolepis custodiens", "Camponotus sp1", "Camponotus fulvopilosis") 
Site <- c("A", "A", "A", "A", "B", "B", "B", "B", "C", "C", "C", "C") 
Portion <- c(5/38*100, 23/38*100, 8/38*100, 2/38*100, 16/41*100, 7/41*100, 18/41*100, 0/41*100, 0/18*100, 3/18*100, 10/18*100, 5/18*100) 

df <- data.frame(Site, Species, Portion) 
colnames(df) <- c("SITE", "SPECIES", "PORTION") 

ggplot(data = df, aes(x = SPECIES, y = PORTION, fill = SPECIES)) + 
    geom_bar(stat = "identity") + 
    scale_y_continuous(expand = c(0, 0), limits = c(0, 65), breaks = 10*c(0:6)) + 
    theme_bw() + 
    facet_grid(~SITE, switch = "x", scales = "free_x", space = "free_x") + 
    theme(strip.text.x = element_text(size = 12)) + 
    theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5, size = 10)) + 
    theme(axis.text.x=element_blank(), 
     axis.ticks.x=element_blank()) + 
    theme(panel.margin = unit(0, "lines"), 
     strip.background = element_blank()) + 
    scale_fill_manual(name = "SPECIES", 
        values=c("#999999", "#E69F00", "#56B4E9", "#009E73"))+ 
    ylab("Portion of total ant found at site") + 
    xlab("Site") + 
    theme(panel.grid.major.y = element_line("lightgray"), 
     panel.grid.major.x = element_blank()) + 
    theme(axis.line = element_line(color = "black"), 
     legend.position = "right", 
     legend.title=element_text(), 
     legend.text = element_text(size = 10, face = "italic"), 
     text = element_text(size=12)) 

Die Grafik sieht wie folgt am Ende: Graph showing the portion for each species collected at each site

ich in gefüllte Kreise für die 0 Bemerkungen hinzufügen möchten zu zeigen, welche Arten von jeder Stelle fehlen, die nicht dort gesammelt wurde, aber wurde erwartet

Ich würde es gerne tun, ohne jede Art Namen auf der x-Achse hinzufügen, da dies nur wirklich unordentlich wird. My-Datensatz über 50 Seiten hat und etwa 13 Arten

+0

Ich erhalte den Fehler 'Fehler: Unzureichende Werte im manuellen Maßstab. 5 benötigt aber nur 4 zur Verfügung gestellt., Auch eine Warnung, dass "panel.margin" veraltet ist. Bitte verwenden Sie 'panel.spacing' Eigenschaft statt' –

Antwort

2

Zum Beispiel das Hinzufügen

# ... your plotting chain + 
    scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9", "#009E73")) + # dupe fill cols 
    geom_point(
    aes(size=ifelse(is.na(PORTION),1,NA),color=SPECIES), 
    tidyr::complete(df, SITE, SPECIES), 
    y=1, 
    show.legend = F) 

sollten Sie so etwas wie

enter image description here

Ähnlich geben würde dies auch Nullwerte:

geom_point(
    aes(size=ifelse(is.na(PORTION) | PORTION==0,1,NA),color=SPECIES), 
    tidyr::complete(df, SITE, SPECIES), 
    y=1, 
    show.legend = F) 

enter image description here

+0

Ich bekomme weiterhin den folgenden Fehler, wenn ich den Code versuchen: Fehler in UseMethod ("complete_"): keine anwendbare Methode für 'complete_' angewendet auf ein Objekt der Klasse "function" –

+0

@LudwigEksteen Wahrscheinlich, weil Sie Ihre Daten nicht in einem Datenrahmen namens 'df' haben ... – lukeA

+0

Danke, das hat funktioniert. Irgendeine Möglichkeit, die Arten aus den Graphen zu entfernen, die nicht auf der Baustelle erwartet wurden? –

Verwandte Themen