3
3
position_connect <- function (connection = " hv" ) {
4
4
ggproto(
5
5
NULL , PositionConnect ,
6
- connection = validate_connection( connection )
6
+ connection = connection
7
7
)
8
8
}
9
9
@@ -12,19 +12,26 @@ PositionConnect <- ggproto(
12
12
connection = " hv" ,
13
13
setup_params = function (self , data ) {
14
14
flipped_aes <- has_flipped_aes(data , ambiguous = TRUE )
15
- connection <- self $ connection
15
+ connection <- validate_connection(
16
+ self $ connection ,
17
+ call = expr(position_connect())
18
+ )
16
19
if (isTRUE(flipped_aes )) {
17
20
connection <- connection [, 2 : 1 ]
18
21
}
19
22
list (flipped_aes = flipped_aes , connection = connection )
20
23
},
21
24
compute_panel = function (data , params , scales ) {
25
+ if (is.null(params $ connection )) {
26
+ return (data )
27
+ }
22
28
data <- flip_data(data , params $ flipped_aes )
23
29
data <- dapply(data , " group" , build_connection , connection = params $ connection )
24
30
flip_data(data , params $ flipped_aes )
25
31
}
26
32
)
27
33
34
+ # Ensures connection is a 2D numerical matrix with 2 columns
28
35
validate_connection <- function (connection , call = caller_env()) {
29
36
if (is.character(connection )) {
30
37
check_string(connection )
@@ -41,14 +48,24 @@ validate_connection <- function(connection, call = caller_env()) {
41
48
! identical(dim(connection )[2 ], 2L )) {
42
49
extra <- " "
43
50
if (! is.null(dim(connection )[2 ])) {
44
- extra <- " with { dim(connection)[2]} columns"
51
+ extra <- paste0( " with " , dim(connection )[2 ], " columns" )
45
52
}
46
53
cli :: cli_abort(
47
54
paste0(" {.arg connection} must be a numeric {.cls matrix} with 2 columns, \\
48
- not {.obj_type_friendly {connection}}" , extra , " ." ),
55
+ not {.obj_type_friendly {connection}}{extra}." ),
56
+ call = call
57
+ )
58
+ }
59
+ if (any(! is.finite(connection ))) {
60
+ cli :: cli_abort(
61
+ " {.arg connection} cannot contain missing or other non-finite values." ,
49
62
call = call
50
63
)
51
64
}
65
+
66
+ if (nrow(connection ) < 1 ) {
67
+ return (NULL )
68
+ }
52
69
connection
53
70
}
54
71
0 commit comments