@@ -167,11 +167,18 @@ CoordRadial <- ggproto("CoordRadial", Coord,
167
167
guide_params [[" theta" ]]$ position <- " theta"
168
168
guide_params [[" theta.sec" ]]$ position <- " theta.sec"
169
169
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
+
170
176
if (self $ r_axis_inside ) {
171
177
172
178
arc <- rad2deg(self $ arc )
173
179
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 )) {
175
182
arc <- rev(arc )
176
183
r_position <- rev(r_position )
177
184
}
@@ -182,8 +189,12 @@ CoordRadial <- ggproto("CoordRadial", Coord,
182
189
guide_params [[" r" ]]$ angle <- guide_params [[" r" ]]$ angle %| W | % arc [1 ]
183
190
guide_params [[" r.sec" ]]$ angle <- guide_params [[" r.sec" ]]$ angle %| W | % arc [2 ]
184
191
} 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 ]
187
198
}
188
199
189
200
guide_params [drop_guides ] <- list (NULL )
0 commit comments