4
4
# ' secondary axis, positioned opposite of the primary axis. All secondary
5
5
# ' axes must be based on a one-to-one transformation of the primary axes.
6
6
# '
7
- # ' @param trans A formula or function of transformation
7
+ # ' @param transform A formula or function of transformation
8
+ # '
9
+ # ' @param trans `r lifecycle::badge("deprecated")`
8
10
# '
9
11
# ' @param name The name of the secondary axis
10
12
# '
94
96
# ' )
95
97
# '
96
98
# ' @export
97
- sec_axis <- function (trans = NULL , name = waiver(), breaks = waiver(), labels = waiver(),
98
- guide = waiver()) {
99
+ sec_axis <- function (transform = NULL ,
100
+ name = waiver(), breaks = waiver(), labels = waiver(),
101
+ guide = waiver(), trans = deprecated()) {
102
+ if (lifecycle :: is_present(trans )) {
103
+ deprecate_soft0(" 3.5.0" , " sec_axis(trans)" , " sec_axis(transform)" )
104
+ transform <- trans
105
+ }
106
+
99
107
# sec_axis() historically accepted two-sided formula, so be permissive.
100
- if (length(trans ) > 2 ) trans <- trans [c(1 ,3 )]
108
+ if (length(transform ) > 2 ) transform <- transform [c(1 ,3 )]
101
109
102
- trans <- as_function(trans )
110
+ transform <- as_function(transform )
103
111
ggproto(NULL , AxisSecondary ,
104
- trans = trans ,
112
+ transform = transform ,
105
113
name = name ,
106
114
breaks = breaks ,
107
115
labels = labels ,
@@ -111,8 +119,9 @@ sec_axis <- function(trans = NULL, name = waiver(), breaks = waiver(), labels =
111
119
# ' @rdname sec_axis
112
120
# '
113
121
# ' @export
114
- dup_axis <- function (trans = ~ . , name = derive(), breaks = derive(), labels = derive(), guide = derive()) {
115
- sec_axis(trans , name , breaks , labels , guide )
122
+ dup_axis <- function (transform = ~ . , trans = deprecated(),
123
+ name = derive(), breaks = derive(), labels = derive(), guide = derive()) {
124
+ sec_axis(transform , trans = trans , name , breaks , labels , guide )
116
125
}
117
126
118
127
is.sec_axis <- function (x ) {
@@ -144,7 +153,7 @@ is.derived <- function(x) {
144
153
# ' @usage NULL
145
154
# ' @export
146
155
AxisSecondary <- ggproto(" AxisSecondary" , NULL ,
147
- trans = NULL ,
156
+ transform = NULL ,
148
157
axis = NULL ,
149
158
name = waiver(),
150
159
breaks = waiver(),
@@ -156,26 +165,27 @@ AxisSecondary <- ggproto("AxisSecondary", NULL,
156
165
detail = 1000 ,
157
166
158
167
empty = function (self ) {
159
- is.null(self $ trans )
168
+ is.null(self $ transform % || % self $ trans )
160
169
},
161
170
162
171
# Inherit settings from the primary axis/scale
163
172
init = function (self , scale ) {
164
173
if (self $ empty()) {
165
174
return ()
166
175
}
167
- if (! is.function(self $ trans )) {
176
+ transform <- self $ transform %|| % self $ trans
177
+ if (! is.function(transform )) {
168
178
cli :: cli_abort(" Transformation for secondary axes must be a function." )
169
179
}
170
180
if (is.derived(self $ name ) && ! is.waive(scale $ name )) self $ name <- scale $ name
171
181
if (is.derived(self $ breaks )) self $ breaks <- scale $ breaks
172
- if (is.waive(self $ breaks )) self $ breaks <- scale $ trans $ breaks
182
+ if (is.waive(self $ breaks )) self $ breaks <- scale $ transformation $ breaks
173
183
if (is.derived(self $ labels )) self $ labels <- scale $ labels
174
184
if (is.derived(self $ guide )) self $ guide <- scale $ guide
175
185
},
176
186
177
187
transform_range = function (self , range ) {
178
- self $ trans (range )
188
+ self $ transform (range )
179
189
},
180
190
181
191
mono_test = function (self , scale ){
@@ -186,8 +196,9 @@ AxisSecondary <- ggproto("AxisSecondary", NULL,
186
196
return ()
187
197
}
188
198
199
+ transformation <- scale $ get_transformation()
189
200
along_range <- seq(range [1 ], range [2 ], length.out = self $ detail )
190
- old_range <- scale $ trans $ inverse(along_range )
201
+ old_range <- transformation $ inverse(along_range )
191
202
192
203
# Create mapping between primary and secondary range
193
204
full_range <- self $ transform_range(old_range )
@@ -204,8 +215,9 @@ AxisSecondary <- ggproto("AxisSecondary", NULL,
204
215
self $ mono_test(scale )
205
216
206
217
# Get scale's original range before transformation
218
+ transformation <- scale $ get_transformation()
207
219
along_range <- seq(range [1 ], range [2 ], length.out = self $ detail )
208
- old_range <- scale $ trans $ inverse(along_range )
220
+ old_range <- transformation $ inverse(along_range )
209
221
210
222
# Create mapping between primary and secondary range
211
223
full_range <- self $ transform_range(old_range )
@@ -225,8 +237,8 @@ AxisSecondary <- ggproto("AxisSecondary", NULL,
225
237
226
238
# patch for date and datetime scales just to maintain functionality
227
239
# works only for linear secondary transforms that respect the time or date transform
228
- if (scale $ trans $ name %in% c(" date" , " time" )) {
229
- temp_scale <- self $ create_scale(new_range , trans = scale $ trans )
240
+ if (transformation $ name %in% c(" date" , " time" )) {
241
+ temp_scale <- self $ create_scale(new_range , transformation = transformation )
230
242
range_info <- temp_scale $ break_info()
231
243
old_val_trans <- rescale(range_info $ major , from = c(0 , 1 ), to = range )
232
244
old_val_minor_trans <- rescale(range_info $ minor , from = c(0 , 1 ), to = range )
@@ -237,7 +249,7 @@ AxisSecondary <- ggproto("AxisSecondary", NULL,
237
249
# Map the break values back to their correct position on the primary scale
238
250
if (! is.null(range_info $ major_source )) {
239
251
old_val <- stats :: approx(full_range , old_range , range_info $ major_source )$ y
240
- old_val_trans <- scale $ trans $ transform(old_val )
252
+ old_val_trans <- transformation $ transform(old_val )
241
253
242
254
# rescale values from 0 to 1
243
255
range_info $ major [] <- round(
@@ -253,7 +265,7 @@ AxisSecondary <- ggproto("AxisSecondary", NULL,
253
265
254
266
if (! is.null(range_info $ minor_source )) {
255
267
old_val_minor <- stats :: approx(full_range , old_range , range_info $ minor_source )$ y
256
- old_val_minor_trans <- scale $ trans $ transform(old_val_minor )
268
+ old_val_minor_trans <- transformation $ transform(old_val_minor )
257
269
258
270
range_info $ minor [] <- round(
259
271
rescale(
@@ -280,14 +292,14 @@ AxisSecondary <- ggproto("AxisSecondary", NULL,
280
292
},
281
293
282
294
# Temporary scale for the purpose of calling break_info()
283
- create_scale = function (self , range , trans = transform_identity()) {
295
+ create_scale = function (self , range , transformation = transform_identity()) {
284
296
scale <- ggproto(NULL , ScaleContinuousPosition ,
285
297
name = self $ name ,
286
298
breaks = self $ breaks ,
287
299
labels = self $ labels ,
288
300
limits = range ,
289
301
expand = c(0 , 0 ),
290
- trans = trans
302
+ transformation = transformation
291
303
)
292
304
scale $ train(range )
293
305
scale
0 commit comments