1515# ' gsNew <- abline(gsNew, b=1, a=0, legend.name="1:1")
1616# ' gsNew <- legend(gsNew, location="topleft",title="Awesome!")
1717# ' gsNew
18+ # '
19+ # ' gs <- gsplot() %>%
20+ # ' points(1:10,1:10) %>%
21+ # ' lines(6:14,6:14,side=c(3,4)) %>%
22+ # ' grid(side=c(3,4))
23+ # ' gs
24+ # '
25+ # ' gs <- gsplot() %>%
26+ # ' points(1:10,1:10) %>%
27+ # ' axis(side=1, at=seq(1,10,length.out=18),las=3) %>%
28+ # ' axis(side=3, labels=FALSE) %>%
29+ # ' grid(side=c(1,2),col="green") %>%
30+ # ' grid(side=c(3,4))
31+ # ' gs
32+ # '
33+ # ' gs <- gsplot() %>%
34+ # ' points(x=seq.Date(as.Date("2000-01-01"),as.Date("2010-01-01"),length.out = 20),
35+ # ' y=1:20,axes=FALSE) %>%
36+ # ' grid()
37+ # ' gs
38+ # '
39+ # ' gs <- gsplot() %>%
40+ # ' points(x=1:10, y=1:10) %>%
41+ # ' grid(lty=3, col="gray") %>%
42+ # ' axis(side=2, reverse=TRUE)
43+ # ' gs
1844grid <- function (object , ... ) {
1945 override(" graphics" , " grid" , object , ... )
2046}
2147
22-
2348grid.gsplot <- function (object , ... , legend.name = NULL , side = c(1 ,2 )){
24- set_window_args(object , fun.name = ' grid' , ... , legend.name = legend.name , side = side , def.funs = graphics :: grid )
49+
50+ object <- set_window_args(object , fun.name = ' grid' , ... , legend.name = legend.name , side = side , def.funs = graphics :: grid )
51+
52+ }
53+
54+ draw_custom_grid <- function (object , index ){
55+
56+ i <- which(names(object ) %in% ' axis' )
57+ definded.sides <- sapply(i , function (x ) object [[x ]][[' arguments' ]][[' side' ]])
58+
59+ window = object [[index ]][[' window' ]]
60+
61+ view.info <- view_info(object )
62+ view.info <- view.info [index == view.info $ index ,]
63+
64+ grid.args <- set_args(" grid" ,object [[index ]][[' grid' ]], package = " graphics" )
65+
66+ if (class(window $ xlim ) %in% c(" numeric" ," integer" )){
67+ x.at <- axTicks(view.info $ x )
68+ } else if (class(window $ xlim ) == " Date" ){
69+ x.at <- axis.Date(view.info $ x ,window $ xlim )
70+ } else if (class(window $ xlim ) == " POSIXct" ){
71+ x.at <- axis.POSIXct(view.info $ x ,window $ xlim )
72+ }
73+
74+ if (view.info $ x.side.defined.by.user ){
75+ axes.index <- i [definded.sides == view.info $ x ]
76+ x <- object [axes.index ][[' axis' ]][[' arguments' ]][[' at' ]]
77+ if (! is.null(x )){
78+ x.at <- x
79+ }
80+ }
81+
82+ if (class(window $ ylim ) %in% c(" numeric" ," integer" )){
83+ y.at <- axTicks(view.info $ y )
84+ } else if (class(window $ ylim ) == " Date" ){
85+ y.at <- axis.Date(view.info $ y ,window $ ylim )
86+ } else if (class(window $ ylim ) == " POSIXct" ){
87+ y.at <- axis.POSIXct(view.info $ y ,window $ ylim )
88+ }
89+
90+ if (view.info $ y.side.defined.by.user ){
91+ axes.index <- i [definded.sides == view.info $ y ]
92+ y <- object [axes.index ][[' axis' ]][[' arguments' ]][[' at' ]]
93+ if (! is.null(y )){
94+ y.at <- y
95+ }
96+ }
97+ grid.args <- grid.args [names(grid.args ) != " equilogs" ]
98+ abline(h = y.at , v = x.at , grid.args )
99+
25100}
0 commit comments