Here's a workaround using `geom_hline`

and `geom_vline`

.

`f <- ggplot(mpg, aes(cty, hwy)) f + geom_smooth(color="red") `

It generates this plot.

To add horizontal and vertical lines manually:

`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) `

To automatically add `xintercept`

and `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) `

Now any changes in `axis-ticks`

introduced by `scale-*`

functions will reflect in the final plot.

Here we have horizontal and vertical lines (similar to grid) on top of the plot. You can vary `size`

to make lines more thick.

But it's just a workaround. Given the flexibility of `ggplot2`

package, I *think* something similar can be achieved using `theme`

. But I do not know how.

**Edit1 :** We can try following but it won't put grids on top. This way we can change `size`

, `color`

, `linetype`

but that's all.

`f + geom_smooth(color="red") + theme(panel.grid.major=element_line(color="white", size=2)) `

**Edit2 :** Added automatically insertion of `xintercept`

and `yintercept`

using `ggplot_build(f)`

as explained here.