How might the angle of x-axis labels follow the same angle as the outer x-axis using the coor_polar projection in ggplot? This is similar to rotate x-axis text in ggplot2 when using coord_polar(), but I don't understand the math well enough to adapt it. I found a trial-and-error solution below that sort of works, where angle = c(c(1:3)*c(-14,-22.3,-22),-90,c(3:1)*c(22,22.3,14),c(1:3)*c(-14,-22.3,-22),90,c(3:1)*c(22,22.3,14))
. It would also be okay for the x-axis labels to rotate in the same direction all the way around. If all else fails, I might give up on rotating the labels and just add a second legend, as in Two legends for polar ggplot (with one customized). Thanks for the help!
require(ggplot2)
df.test <- data.frame(Names=c("name01", "name02", "name03", "name04", "name05", "name06", "name07", "name08", "name09", "name10", "name11", "name12", "name13", "name14"),Values=rep(1,24))
p <- ggplot(df.test, aes(Names, fill=Values))
p + coord_polar(theta="x", direction=1) +
geom_bar(stat="bin", colour="gray", alpha=.7) +
theme(axis.text.x = element_text(angle = c(c(1:3)*c(-14,-22.3,-22),-90,c(3:1)*c(22,22.3,14),c(1:3)*c(-14,-22.3,-22),90,c(3:1)*c(22,22.3,14))))
I'm not exactly clear what your goal is but see if this answers the question:
+ theme(axis.text.x = element_text(angle =
360/(2*pi)*rev( seq( pi/14, 2*pi-pi/14, len=14))))
That would make the names "tangential" to the splits. If you wanted them "perpendicular" (as in the illustration in the linked answer) you just add pi/2 radians to the angle. (Didn't we all take geometry in high school?)
+ theme(axis.text.x = element_text(angle =
360/(2*pi)*rev( pi/2 + seq( pi/14, 2*pi-pi/14, len=14))))
(BTW: The data argument that you specified had an error. I changed "24" to "14".)
Let me know if the first 7 labels look right, but you want the ones on the LHS of the figure flipped.
So you want the bottom 6 rotated by pi radians (=pi*360/2*pi degrees):
+theme(axis.text.x = element_text(angle = 360/(2*pi)*rev(
seq(pi/14,2*pi-pi/14, len=14))+
360/(2*pi)*c( rep(0, 4),rep(pi,6), rep(0,4)) ))
# the rotation "back" of the lower items
(I really do not understand the decision to use degrees rather than radians.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With