2013-10-17 2 views
1

ggplot에서 coor_polar 투영법을 사용하여 x 축 라벨의 각도가 외부 x 축과 동일한 각도를 유지하는 방법은 무엇입니까? 이것은 rotate x-axis text in ggplot2 when using coord_polar()과 비슷하지만 수학을 충분히 이해하지 못합니다. 그런 종류의 작업 아래에서 시행 착오의 해결책을 찾았습니다. 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)). x 축 레이블이 같은 방향으로 회전 할 수도 있습니다. 다른 모든 방법이 실패하면 Two legends for polar ggplot (with one customized)처럼 레이블을 회전하지 않고 두 번째 범례 만 추가하면됩니다. 도와 주셔서 감사합니다!ggplot2의 극좌표 투영에서 x 축을 따르는 레이블 회전?

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)))) 

답변

3

나는 질문에 답변이 경우 목표는하지만 볼 무엇을 정확하게 명확하지 않다 :

+ theme(axis.text.x = element_text(angle = 
      360/(2*pi)*rev(seq(pi/14, 2*pi-pi/14, len=14)))) 

하면 분할에 이름이 "접선"만들 것 그. "수직"(링크 된 답변의 그림 에서처럼)을 원하면 각도에 ​​π/2 라디안을 추가하면됩니다. (우리 모두는 고등학교 기하학을하지 않았다?)

+ theme(axis.text.x = element_text(angle = 
      360/(2*pi)*rev(pi/2 + seq(pi/14, 2*pi-pi/14, len=14)))) 

을 (BTW : 지정한 데이터 인수에 오류가 있었다 나는 "24"을 "14"로 변경..)

것은 나를 보자 처음 7 개의 라벨이 제대로 보이는지는 알지만, 그림의 LHS에 표시된 라벨을 뒤집기를 원할 것입니다.

+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 

(정말도 아닌 라디안을 사용하기로 결정을 이해하지 않습니다 enter image description here

그래서 당신은 파이 라디안 (= PI * 2분의 360 *의 파이도) 회전 바닥 (6)합니다.)

+0

감사합니다. 네, 제가 제공 한 접선 솔루션을 언급하고 있었으며 더 낮은 라벨 5 개를 뒤집어 읽을 수있었습니다. 수학적으로 무언가를해서 유감스럽게 생각합니다. 저는 고등학교 수학보다 문학이 더 중요했습니다. 당신이 만든 편집은 괜찮습니다. "오류"는 내가 전에 일했던 음모의 유물이었고 정말로 중요하지 않았습니다. 각 열을 똑같이 채워서 혼란을 덜고 싶었습니다. 다시 한번 감사드립니다. – proge

0

@ 42-의 해결책이 어떻게 구현 될 수 있는지에 대한 작은 예제가 있습니다. 나에게 유용했을 텐데.

mtcars$gear <- factor(mtcars$gear) 
mtcars$cyl <- factor(mtcars$cyl) 

ax <- length(unique(mtcars$gear)) 

ggplot(mtcars, aes(x = gear, y = cyl)) + 
    geom_point() + 
    coord_polar() + 
    theme(
    axis.text.x = element_text(
     angle = 360/(2*pi)*rev(seq(pi/ax,2*pi-pi/ax, len=ax)) + 360/(2*pi)*c(rep(0, round(ax/3)),rep(pi,ax-2*round(ax/3)), rep(0,round(ax/3))) 
    ) 
) + 
    scale_y_discrete(
    breaks = levels(mtcars$cyl), 
    limits = c(" ", levels(mtcars$cyl)) 
) 
관련 문제