3

ggplot の coor_polar プロジェクションを使用して、x 軸ラベルの角度が外側の x 軸と同じ角度になるにはどうすればよいですか? これは、 coord_polar() を使用するときに ggplot2 で x 軸のテキストを回転させるのと似ていますが、それを適応させるのに十分な数学を理解していません。そのような作品の下で試行錯誤の解決策を見つけました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) のように 2 つ目の凡例を追加するだけかもしれません。助けてくれてありがとう!

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

2 に答える 2

6

あなたの目標が何であるかは正確にはわかりませんが、これが質問に答えるかどうかを確認してください:

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

これにより、名前が分割に「接する」ようになります。それらを「垂直」にしたい場合(リンクされた回答の図のように)、角度に pi/2 ラジアンを追加するだけです。(みんな高校で幾何学をとったんじゃないの?)

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

(ところで: 指定したデータ引数にエラーがありました。"24" を "14" に変更しました。)

最初の 7 つのラベルは正しいように見えますが、図の左側のラベルを反転させたい場合はお知らせください。 ここに画像の説明を入力

したがって、下の 6 を pi ラジアン (=pi*360/2*pi 度) だけ回転させます。

+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

(ラジアンではなく度数を使用するという決定が本当にわかりません。)

于 2013-10-18T02:14:14.893 に答える