2017-10-20 18 views
0

ces données fictives Tenir compteggplot2 - facet_grid: Comment puis-je avoir une plage de valeurs variable le long de l'axe Y mais avec le zéro aligné?

set.seed(12) 
y = c(rnorm(120,0,1), rnorm(120,3,1), rnorm(120,0,120)) 
x = y + rnorm(120*3, 0,1) 
d = data.frame(y=y,x=x,group=rep(1:3,each=120)) 

Je voudrais montrer la relation entre x et y dans chaque group en utilisant ggplot2. Je voudrais aussi ajouter une ligne horizontale à y = 0.

J'ai essayé

ggplot(d, aes(x=x,y=y)) + geom_point() + facet_wrap(~group, nrow=1, scales="free_x") + geom_hline(yintercept = 0) 

enter image description here

mais nous ne voyons pas beaucoup de la variance y dans les deux premiers panneaux. J'ai donc essayé

ggplot(d, aes(x=x,y=y)) + geom_point() + facet_wrap(~group, scales="free", nrow=1) + geom_hline(yintercept = 0) 

enter image description here

mais maintenant les lignes horizontales ne sont pas au même niveau qui me dérange.

Comment puis-je avoir une plage de valeurs variable le long de l'axe Y mais avec le zéro (ou tout autre nombre) parfaitement aligné?

Répondre

1
egg::symmetrise_scale(last_plot(), 'y') 

enter image description here

+0

Grande, une approche simple! – Prradep

1

Vous pouvez y parvenir en utilisant le code ci-dessous:

ggplot(d, aes(x=x, y=y)) + 
    geom_point() + 
    geom_blank(aes(y=-y)) + 
    facet_wrap(~group, scale="free", nrow=1) + 
    geom_hline(yintercept = 0) 

enter image description here