2016-04-11 4 views
2

Я часто создаю диаграммы из ggplot, и мне нравится иметь легкий дизайн (белый фон и т. Д.) Все это прекрасно работает, за исключением того, что линии оси x перекрывают линии оси y, см. Красную маркировку на снимке экрана:R ggplot2: как сделать оси оси x не пересекающимися по оси Y?

overlapping axis, marked red

, что я хотел бы показано ниже, и на данный момент, я должен изменить каждый участок в Illustrator ... Я хотел бы, что ось х не пересекаются линии по оси Y (не справа, а не с левой стороны). По-моему, это выглядит намного чище.

what i want

Кто-нибудь знает, как я могу добиться этого? Я ничего не нашел до сих пор ... так что любая помощь очень ценится.

EDIT (пример):

данные:

        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 

и ggplot-код (без заказа):

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

добавил это - надеюсь, что это помогает! – Mario

+0

Я не думаю, что это будет способ сделать это, не редактируя сетчатые грифы вручную. – joran

ответ

5

Вы можете добавить expand= c(0,0) к а затем переместите метки, чтобы они не были нарезаны. Пример со случайными данными

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

очень приятный и по-настоящему полезный, теперь только то, что метки «proz» -axis перемещаются немного влево ... – Mario

+0

Да, это потому, что график теперь заканчивается правой вертикальной сеткой. Если метки были центрированы ниже их тиков, часть «100» была бы отрублена. Правильное выравнивание их (что привело к перемещению их немного слева) было моим быстрым решением этой проблемы. – arvi1000