Ecco una soluzione utilizzando geom_hline
e geom_vline
.
f <- ggplot(mpg, aes(cty, hwy))
f + geom_smooth(color="red")
Genera questa trama.
Per inserirlo linee orizzontali e verticali manualmente:
f + geom_smooth(color="red")
+ geom_vline(xintercept = c(10,15,20,25,30,35), color="white", size=1.25)
+ geom_hline(yintercept = c(20,30,40), color="white", size=1.25)
Per aggiungere automaticamente xintercept
e yintercept
:
f <- ggplot(mpg, aes(cty, hwy)) + geom_smooth(color="red")
x_intercept <- ggplot_build(f)$panel$ranges[[1]]$x.major_source
## x_intercept
## [1] 10 15 20 25 30 35
y_intercept <- ggplot_build(f)$panel$ranges[[1]]$y.major_source
## y_intercept
## [1] 20 30 40
f + geom_vline(xintercept=x_intercept, color="white", size=1.25)
+ geom_hline(yintercept=y_intercept, color="white", size=1.25)
Ora eventuali modifiche di axis-ticks
introdotte dal scale-*
funzioni rifletterà in la trama finale.
Qui abbiamo linee orizzontali e verticali (simili alla griglia) in cima alla trama. È possibile variare size
per rendere le linee più spesse.
Ma è solo una soluzione. Data la flessibilità del pacchetto ggplot2
, I penso a qualcosa di simile può essere ottenuto utilizzando theme
. Ma non so come.
Edit1: Possiamo provare a seguire ma non inserirà le griglie in cima. In questo modo possiamo cambiare size
, color
, linetype
ma questo è tutto.
f + geom_smooth(color="red")
+ theme(panel.grid.major=element_line(color="white", size=2))
Edit2: aggiunte automaticamente inserimento di xintercept
e yintercept
usando ggplot_build(f)
come spiegato here.
È più probabile che saremo in grado di aiutarti se fai un esempio riproducibile minimo per andare avanti con la tua domanda. Qualcosa da cui possiamo lavorare e utilizzarlo per mostrarti come potrebbe essere possibile risolvere il tuo problema. Puoi dare un'occhiata a [questo post SO] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) su come realizzare un ottimo esempio riproducibile in R –
@EricFail: poiché questo si applicherebbe generalmente a qualsiasi immagine fatta con ggplot, un MWE non sembrava necessario; tuttavia, ho aggiunto un WE che genera un caso di test adatto. – Richard
http://stackoverflow.com/questions/19054092/r-put-ggplot-grid-lines-in-foreground. A meno che non ci sia stato un nuovo sviluppo, sembra che le geografie extra h/vline siano la strada da percorrere – user20650