@@ -167,11 +167,18 @@ CoordRadial <- ggproto("CoordRadial", Coord,
167167 guide_params [[" theta" ]]$ position <- " theta"
168168 guide_params [[" theta.sec" ]]$ position <- " theta.sec"
169169
170+ if (self $ theta == " x" ) {
171+ opposite_r <- isTRUE(scales $ r $ position %in% c(" top" , " right" ))
172+ } else {
173+ opposite_r <- isTRUE(scales $ r $ position %in% c(" bottom" , " left" ))
174+ }
175+
170176 if (self $ r_axis_inside ) {
171177
172178 arc <- rad2deg(self $ arc )
173179 r_position <- c(" left" , " right" )
174- if (self $ direction == - 1 ) {
180+ # If both opposite direction and opposite position, don't flip
181+ if (xor(self $ direction == - 1 , opposite_r )) {
175182 arc <- rev(arc )
176183 r_position <- rev(r_position )
177184 }
@@ -182,8 +189,12 @@ CoordRadial <- ggproto("CoordRadial", Coord,
182189 guide_params [[" r" ]]$ angle <- guide_params [[" r" ]]$ angle %| W | % arc [1 ]
183190 guide_params [[" r.sec" ]]$ angle <- guide_params [[" r.sec" ]]$ angle %| W | % arc [2 ]
184191 } else {
185- guide_params [[" r" ]]$ position <- params $ r_axis
186- guide_params [[" r.sec" ]]$ position <- opposite_position(params $ r_axis )
192+ r_position <- c(params $ r_axis , opposite_position(params $ r_axis ))
193+ if (opposite_r ) {
194+ r_position <- rev(r_position )
195+ }
196+ guide_params [[" r" ]]$ position <- r_position [1 ]
197+ guide_params [[" r.sec" ]]$ position <- r_position [2 ]
187198 }
188199
189200 guide_params [drop_guides ] <- list (NULL )
0 commit comments