@@ -55,12 +55,11 @@ draw_axis <- function(break_positions, break_labels, axis_position, theme) {
55
55
axis_position_opposite <- unname(opposite_positions [axis_position ])
56
56
57
57
# draw elements
58
- line_coords <- list (
59
- position = unit(c(0 , 1 ), " npc" ),
60
- non_position = unit.c(non_position_panel , non_position_panel )
58
+ line_grob <- exec(
59
+ element_grob , line_element ,
60
+ !! position_dim : = unit(c(0 , 1 ), " npc" ),
61
+ !! non_position_dim : = unit.c(non_position_panel , non_position_panel )
61
62
)
62
- names(line_coords ) <- c(position_dim , non_position_dim )
63
- line_grob <- do.call(element_grob , c(list (line_element ), line_coords ))
64
63
65
64
if (n_breaks == 0 ) {
66
65
return (
@@ -72,55 +71,45 @@ draw_axis <- function(break_positions, break_labels, axis_position, theme) {
72
71
)
73
72
}
74
73
75
- label_coords <- list (
76
- position = unit(break_positions , " native" ),
77
- label = break_labels ,
78
- margin = TRUE
74
+ labels_grob <- exec(
75
+ element_grob , label_element ,
76
+ !! position_dim : = unit(break_positions , " native" ),
77
+ !! label_margin_name : = TRUE ,
78
+ label = break_labels
79
79
)
80
80
81
- tick_coords <- list (
82
- position = rep(label_coords $ position , each = 2 ),
83
- non_position = rep(
81
+ ticks_grob <- exec(
82
+ element_grob , tick_element ,
83
+ !! position_dim : = rep(unit(break_positions , " native" ), each = 2 ),
84
+ !! non_position_dim : = rep(
84
85
unit.c(non_position_panel + (tick_direction * tick_length ), non_position_panel )[tick_coordinate_order ],
85
86
times = n_breaks
86
87
),
87
88
id.lengths = rep(2 , times = n_breaks )
88
89
)
89
90
90
- names(label_coords ) <- c(position_dim , " label" , label_margin_name )
91
- names(tick_coords ) <- c(position_dim , non_position_dim , " id.lengths" )
91
+ # create gtable
92
+ table_order_int <- match(table_order , c(" labels" , " ticks" ))
93
+ non_position_sizes <- paste0(non_position_size , " s" )
92
94
93
- grobs <- list (
94
- line = line_grob ,
95
- labels = do.call(element_grob , c(list (label_element ), label_coords )),
96
- ticks = do.call(element_grob , c(list (tick_element ), tick_coords ))
97
- )
98
-
99
- # assemble elements
100
- gt_element_order <- match(table_order , c(" labels" , " ticks" ))
101
- gt_dims <- list (
102
- dims = unit.c(measure_labels(grobs $ labels ), tick_length ),
103
- dim = unit(1 , " npc" )
104
- )
105
- gt_dims $ dims <- gt_dims $ dims [gt_element_order ]
106
- names(gt_dims ) <- c(paste0(non_position_size , " s" ), position_size )
107
-
108
- gt <- do.call(
95
+ gt <- exec(
109
96
gtable_element ,
110
- c(list (name = " axis" , grobs = grobs [table_order ]), gt_dims )
97
+ name = " axis" ,
98
+ grobs = list (labels_grob , ticks_grob )[table_order_int ],
99
+ !! non_position_sizes : = unit.c(measure_labels(labels_grob ), tick_length )[table_order_int ],
100
+ !! position_size : = unit(1 , " npc" )
111
101
)
112
102
113
- justvp_args <- list (
114
- non_position_dim = non_position_panel ,
115
- just = axis_position_opposite ,
116
- non_position_size = measure_gtable(gt )
103
+ # create viewport
104
+ justvp <- exec(
105
+ viewport ,
106
+ !! non_position_dim : = non_position_panel ,
107
+ !! non_position_size : = measure_gtable(gt ),
108
+ just = axis_position_opposite
117
109
)
118
- names(justvp_args ) <- c(non_position_dim , " just" , non_position_size )
119
-
120
- justvp <- do.call(viewport , justvp_args )
121
110
122
111
absoluteGrob(
123
- gList(grobs $ line , gt ),
112
+ gList(line_grob , gt ),
124
113
width = gtable_width(gt ),
125
114
height = gtable_height(gt ),
126
115
vp = justvp
0 commit comments