@@ -387,13 +387,11 @@ to_basic.GeomHex <- function(data, prestats_data, layout, params, p, ...) {
387
387
dy <- resolution(data [[" y" ]], FALSE )/ sqrt(3 )/ 2 * 1.15
388
388
hexC <- hexbin :: hexcoords(dx , dy , n = 1 )
389
389
n <- nrow(data )
390
- size_var <- if (" linewidth" %in% names(data )) " linewidth" else " size"
391
- size <- data [[size_var ]]
392
- data [[size_var ]] <- ifelse(
393
- size < 1 , size ^ (1 / 6 ), size ^ 6
394
- )
395
- x <- rep.int(hexC [[" x" ]], n ) * rep(data [[size_var ]], each = 6 ) + rep(data [[" x" ]], each = 6 )
396
- y <- rep.int(hexC [[" y" ]], n ) * rep(data [[size_var ]], each = 6 ) + rep(data [[" y" ]], each = 6 )
390
+ nm <- linewidth_or_size(GeomHex )
391
+ size <- data [[nm ]]
392
+ data [[nm ]] <- ifelse(size < 1 , size ^ (1 / 6 ), size ^ 6 )
393
+ x <- rep.int(hexC [[" x" ]], n ) * rep(data [[nm ]], each = 6 ) + rep(data [[" x" ]], each = 6 )
394
+ y <- rep.int(hexC [[" y" ]], n ) * rep(data [[nm ]], each = 6 ) + rep(data [[" y" ]], each = 6 )
397
395
data <- data [rep(seq_len(n ), each = 6 ), ]
398
396
data [[" x" ]] <- x
399
397
data [[" y" ]] <- y
@@ -563,11 +561,8 @@ to_basic.GeomSpoke <- function(data, prestats_data, layout, params, p, ...) {
563
561
to_basic.GeomCrossbar <- function (data , prestats_data , layout , params , p , ... ) {
564
562
# from GeomCrossbar$draw_panel()
565
563
middle <- base :: transform(data , x = xmin , xend = xmax , yend = y , alpha = NA )
566
- data <- if (" linewidth" %in% names(middle )) {
567
- base :: transform(data , linewidth = linewidth * params $ fatten )
568
- } else {
569
- base :: transform(data , size = size * params $ fatten )
570
- }
564
+ nm <- linewidth_or_size(GeomCrossbar )
565
+ data [[nm ]] <- data [[nm ]] * params $ fatten
571
566
list (
572
567
prefix_class(to_basic.GeomRect(data ), " GeomCrossbar" ),
573
568
prefix_class(to_basic.GeomSegment(middle ), " GeomCrossbar" )
@@ -707,9 +702,6 @@ geom2trace.GeomBlank <- function(data, params, p) {
707
702
geom2trace.GeomPath <- function (data , params , p ) {
708
703
data <- group2NA(data )
709
704
710
- # ggplot2 >3.4.0 changed from size to linewidth for controlling line width
711
- width_var <- if (" linewidth" %in% names(data )) " linewidth" else " size"
712
-
713
705
L <- list (
714
706
x = data [[" x" ]],
715
707
y = data [[" y" ]],
@@ -723,7 +715,7 @@ geom2trace.GeomPath <- function(data, params, p) {
723
715
name = if (inherits(data , " GeomSmooth" )) " fitted values" ,
724
716
line = list (
725
717
# TODO: line width array? -- https://github.com/plotly/plotly.js/issues/147
726
- width = aes2plotly(data , params , width_var )[1 ],
718
+ width = aes2plotly(data , params , linewidth_or_size( GeomPath ) )[1 ],
727
719
color = toRGB(
728
720
aes2plotly(data , params , " colour" ),
729
721
aes2plotly(data , params , " alpha" )
@@ -791,9 +783,6 @@ geom2trace.GeomBar <- function(data, params, p) {
791
783
base <- data [[" ymin" ]]
792
784
x <- with(data , ymax - ymin )
793
785
}
794
-
795
- # ggplot2 >3.4.0 changed from size to linewidth for controlling line width
796
- width_var <- if (" linewidth" %in% names(data )) " linewidth" else " size"
797
786
798
787
compact(list (
799
788
orientation = if (flip ) " h" else " v" ,
@@ -819,7 +808,7 @@ geom2trace.GeomBar <- function(data, params, p) {
819
808
aes2plotly(data , params , " alpha" )
820
809
),
821
810
line = list (
822
- width = aes2plotly(data , params , width_var ),
811
+ width = aes2plotly(data , params , linewidth_or_size( GeomBar ) ),
823
812
color = aes2plotly(data , params , " colour" )
824
813
)
825
814
)
@@ -830,9 +819,6 @@ geom2trace.GeomBar <- function(data, params, p) {
830
819
geom2trace.GeomPolygon <- function (data , params , p ) {
831
820
data <- group2NA(data )
832
821
833
- # ggplot2 >3.4.0 changed from size to linewidth for controlling line width
834
- width_var <- if (" linewidth" %in% names(data )) " linewidth" else " size"
835
-
836
822
L <- list (
837
823
x = data [[" x" ]],
838
824
y = data [[" y" ]],
@@ -844,7 +830,7 @@ geom2trace.GeomPolygon <- function(data, params, p) {
844
830
type = " scatter" ,
845
831
mode = " lines" ,
846
832
line = list (
847
- width = aes2plotly(data , params , width_var ),
833
+ width = aes2plotly(data , params , linewidth_or_size( GeomPolygon ) ),
848
834
color = toRGB(
849
835
aes2plotly(data , params , " colour" ),
850
836
aes2plotly(data , params , " alpha" )
@@ -865,9 +851,6 @@ geom2trace.GeomPolygon <- function(data, params, p) {
865
851
866
852
# ' @export
867
853
geom2trace.GeomBoxplot <- function (data , params , p ) {
868
- # ggplot2 >3.4.0 changed from size to linewidth for controlling line width
869
- width_var <- if (" linewidth" %in% names(data )) " linewidth" else " size"
870
-
871
854
compact(list (
872
855
x = data [[" x" ]],
873
856
y = data [[" y" ]],
@@ -894,7 +877,7 @@ geom2trace.GeomBoxplot <- function(data, params, p) {
894
877
),
895
878
line = list (
896
879
color = aes2plotly(data , params , " colour" ),
897
- width = aes2plotly(data , params , width_var )
880
+ width = aes2plotly(data , params , linewidth_or_size( GeomBoxplot ) )
898
881
)
899
882
))
900
883
}
@@ -1135,6 +1118,26 @@ aes2plotly <- function(data, params, aes = "size") {
1135
1118
converter(vals )
1136
1119
}
1137
1120
1121
+
1122
+ # ggplot2 3.4.0 deprecated size in favor of linewidth in line-based geoms (e.g.,
1123
+ # GeomLine, GeomRect, etc) and elements (e.g., element_line(), element_rect(),
1124
+ # etc). Note that, some geoms (e.g., GeomBoxplot, GeomSf) can have both
1125
+ # linewidth and size
1126
+ linewidth_or_size <- function (x ) {
1127
+ UseMethod(" linewidth_or_size" )
1128
+ }
1129
+
1130
+ # ' @export
1131
+ linewidth_or_size.Geom <- function (x ) {
1132
+ if (" linewidth" %in% x $ aesthetics()) " linewidth" else " size"
1133
+ }
1134
+
1135
+ # ' @export
1136
+ linewidth_or_size.element <- function (x ) {
1137
+ if (" linewidth" %in% names(x )) " linewidth" else " size"
1138
+ }
1139
+
1140
+
1138
1141
# Convert R pch point codes to plotly "symbol" codes.
1139
1142
pch2symbol <- function (x ) {
1140
1143
lookup <- list (
0 commit comments