@@ -90,13 +90,13 @@ lims <- function(...) {
90
90
# ' @export
91
91
# ' @rdname lims
92
92
xlim <- function (... ) {
93
- limits(c(... ), " x" )
93
+ limits(c(... ), " x" , call = current_call() )
94
94
}
95
95
96
96
# ' @export
97
97
# ' @rdname lims
98
98
ylim <- function (... ) {
99
- limits(c(... ), " y" )
99
+ limits(c(... ), " y" , call = current_call() )
100
100
}
101
101
102
102
# ' Generate correct scale type for specified limits
@@ -122,42 +122,45 @@ limits.numeric <- function(lims, var, call = caller_env()) {
122
122
trans <- " identity"
123
123
}
124
124
125
- make_scale(" continuous" , var , limits = lims , trans = trans )
125
+ make_scale(" continuous" , var , limits = lims , trans = trans , call = call )
126
126
}
127
127
128
- make_scale <- function (type , var , ... ) {
129
- scale <- match.fun(paste(" scale_" , var , " _" , type , sep = " " ))
130
- scale(... )
128
+ make_scale <- function (type , var , ... , call = NULL ) {
129
+ name <- paste(" scale_" , var , " _" , type , sep = " " )
130
+ scale <- match.fun(name )
131
+ sc <- scale(... )
132
+ sc $ call <- call %|| % parse_expr(paste0(name , " ()" ))
133
+ sc
131
134
}
132
135
133
136
# ' @export
134
137
limits.character <- function (lims , var , call = caller_env()) {
135
- make_scale(" discrete" , var , limits = lims )
138
+ make_scale(" discrete" , var , limits = lims , call = call )
136
139
}
137
140
# ' @export
138
141
limits.factor <- function (lims , var , call = caller_env()) {
139
- make_scale(" discrete" , var , limits = as.character(lims ))
142
+ make_scale(" discrete" , var , limits = as.character(lims ), call = call )
140
143
}
141
144
# ' @export
142
145
limits.Date <- function (lims , var , call = caller_env()) {
143
146
if (length(lims ) != 2 ) {
144
147
cli :: cli_abort(" {.arg {var}} must be a two-element vector" , call = call )
145
148
}
146
- make_scale(" date" , var , limits = lims )
149
+ make_scale(" date" , var , limits = lims , call = call )
147
150
}
148
151
# ' @export
149
152
limits.POSIXct <- function (lims , var , call = caller_env()) {
150
153
if (length(lims ) != 2 ) {
151
154
cli :: cli_abort(" {.arg {var}} must be a two-element vector" , call = call )
152
155
}
153
- make_scale(" datetime" , var , limits = lims )
156
+ make_scale(" datetime" , var , limits = lims , call = call )
154
157
}
155
158
# ' @export
156
159
limits.POSIXlt <- function (lims , var , call = caller_env()) {
157
160
if (length(lims ) != 2 ) {
158
161
cli :: cli_abort(" {.arg {var}} must be a two-element vector" , call = call )
159
162
}
160
- make_scale(" datetime" , var , limits = as.POSIXct(lims ))
163
+ make_scale(" datetime" , var , limits = as.POSIXct(lims ), call = call )
161
164
}
162
165
163
166
# ' Expand the plot limits, using data
0 commit comments