2015-10-28 17 views
11

Ho un comportamento strano da ggplot. Ecco un MWE:come utilizzare coord_carteisan e coord_flip insieme in ggplot2

the_data <- data.frame(
    myx <- 1:10, 
    lower <- rnorm(10,-5,1), 
    mean <- rnorm(10,0,.5), 
    upper <- rnorm(10,5,1)) 
the_data2 <- data.frame(
    myx <- 1:10, 
    lower <- rnorm(10,-5,1), 
    mean <- rnorm(10,0,.5), 
    upper <- rnorm(10,5,1)) 

ora, voglio costruire una trama in cui il prodotto finale avrà un punto per la media, e una linea tracciata dalla più bassa alla uppper. Ma voglio che queste linee siano orizzontali. Voglio anche "ingrandire" sul grafico in modo che vengano mostrati solo i valori da -1 a 1. Ho bisogno di usare coord_cartesian perché se uso ylim rilascia i punti dati che si trovano all'esterno del grafico, che rovinano le linee. Ma quando ho eseguito:

ggplot() + 
    geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data) + 
    geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data2) + 
    coord_cartesian(ylim = c(-1, 1)) + 
    coord_flip() 

esso non si applica il "zoom" e il passaggio dei due argomenti:

ggplot() + 
    geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data) + 
    geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data2) + 
    coord_flip() + 
    coord_cartesian(ylim = c(-1, 1)) 

applys lo zoom, ma non il capovolgimento. Cosa sta succedendo qui?

+0

si è dimenticato un '' 'dietro 'coord_cartesian (ylim = c (-1, 1))' ... – beetroot

+0

Risolto, grazie. Ha ancora quel problema, però ... – Alex

risposta

11

coord_flip è un involucro intorno a coord_cartesian. Fai due chiamate allo coord_cartesian con il secondo che sovrascrive il primo. È possibile effettuare ciò:

ggplot() + 
    geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data) + 
    geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data2) + 
    coord_flip(ylim = c(-1, 1)) 
+0

Questo ha senso. Ho pensato che fosse qualcosa di simile, non riuscivo a capirlo! Grazie! – Alex

3

Non ha senso disporre di più sistemi di coordinate per lo stesso grafico. Si desidera coord_flip(ylim = c(-1, 1))

Problemi correlati