2016-04-11 6 views
2

Ich produziere oft Diagramme von ggplot, und ich mag ein leichtes Design (weißer Hintergrund etc.) Das alles funktioniert gut, außer dass die x-Achsenlinien die y-Achsenlinien überlappen, siehe rote Markierungen im Screenshot:R ggplot2: Wie man X-Achsen-Linien nicht überlappende y-Achse macht?

overlapping axis, marked red

was ich mag würde, ist unten und im Moment gezeigt, ich habe jede Handlung in Illustrator bearbeiten ... ich möchte, dass die x-Achse nicht die y-Achse Linien überlappt (nicht auf der rechten Seite und nicht auf der linken Seite). Meiner Meinung nach sieht das viel sauberer aus.

what i want

Wer weiß, wie ich das erreichen kann? Ich habe bis jetzt noch nichts gefunden ... also jede Hilfe wird sehr geschätzt.

EDIT (Beispiel):

die Daten:

        label_de proz 
1:      Dialekt/Sprache 37.6 
2:        Landschaft 52.1 
3: Traditionen und Bräuche (Fasnacht, etc.) 20.4 
4:    Siedlungsraum (Gebäude usw.) 21.6 
5: Sportclubs (Fussball, Eishockey, etc.) 13.4 
6:      Freunde und Bekannte 61.7 
7:         Familie 57.0 
8:     Bewohnerinnen/Bewohner 14.9 
9: Kulinarisches Angebot (Essen, Trinken) 12.2 
10:       Freizeitangebot 18.6 
11:      Politisches Profil 5.8 
12:         Anderes 13.1 

und die ggplot-Code (ohne Bestellung):

p <- ggplot(data=ggdata, aes(x=label_de, y=proz) ) + 
    geom_bar(stat="identity", position="dodge") + 
    ylim(0,100) + 
    coord_flip() + 
    theme_bw() + theme(strip.background = element_blank(), 
             panel.grid.major = element_line(colour = "grey80"), 
             panel.border = element_blank(), 
             axis.ticks = element_blank(), 
             panel.grid.minor.y = element_blank(), 
             panel.grid.major.y = element_line(colour = "grey80"), 
             axis.text.y = element_text(hjust = 1), 
             legend.position="bottom") 
+0

hinzugefügt, um es - hoffe, das hilft! – Mario

+0

Ich glaube nicht, dass es eine Möglichkeit gibt, dies zu tun, ohne die Grid-Grobs manuell zu bearbeiten. – joran

Antwort

5

Sie könnten expand= c(0,0) auf die hinzufügen skalieren und verschieben Sie die Etiketten dann so, dass sie nicht gehackt werden. Beispiel mit zufälligen Daten

set.seed(123) 
ggplot(data=data.frame(label_de=letters[1:10], proz = runif(10,0, 85)), 
     aes(x=label_de, y=proz)) + 
    geom_bar(stat="identity", position="dodge") + 
    coord_flip() + 

    # notice this part 
    scale_y_continuous(limits = c(0,100), expand = c(0,0)) + 
    theme_bw() + 
    theme(strip.background = element_blank(), 
     panel.grid.major = element_line(colour = "grey80"), 
     panel.border = element_blank(), 
     axis.ticks = element_blank(), 
     panel.grid.minor.y = element_blank(), 
     panel.grid.major.y = element_line(colour = "grey80"), 
     axis.text.y = element_text(hjust = 1), 

     # notice this part 
     axis.text.x = element_text(hjust = 1), 
     legend.position="bottom") 

enter image description here

+0

sehr nett und wirklich hilfreich, nur dass jetzt die "proz" -Achsetiketten ein bisschen nach links bewegt werden ... – Mario

+0

Ja, das liegt daran, dass die Handlung jetzt sofort mit der am weitesten rechts liegenden vertikalen Gitterlinie endet. Wenn die Etiketten unter ihren Zecken zentriert wären, würde ein Teil der '100' abgeschnitten werden. Das richtige Ausrichten (das hat den Effekt, dass sie etwas nach links verschoben werden) war meine schnelle Lösung für dieses Problem. – arvi1000

Verwandte Themen