6

ggplot2 を使用して、以下のようなグラフを簡単に描画できます。

1

実際、私のデータでは、次のようになります。

度値
1 120 0.50
2 30 0.20
3 -120 0.20
4 60 0.50
5 150 0.40
6 -90 0.14
7 -60 0.50
8 0 0.60

最初の列は次数 (-180 から 180 または 0 から 360) で、2 番目の列は対応する値です。したがって、(0,0)から各データポイントに矢印でグラフポイントを描画しますが、以下のように円座標を使用します。

2
(出典:matrixlab-examples.com

私は次のコードを使用しようとします:

base <- ggplot(polar, aes(x=degree, y=value))
p <- base + coord_polar()
p <- p + geom_segment(aes(x=0, y=0, xend=degree, yend=value ),      arrow=arrow(length=unit(0.3,"cm")) )
print(p)

極座標プロットが生成されましたが、(0,0) からデータ ポイントへの直線矢印が得られませんでした。

また、plotrix パッケージを使用してこのグラフを描画しようとしています。以下のように動作します。

3 http://rgm2.lab.nig.ac.jp/RGM_results/plotrix:polar.plot/polar.plot_001_med.png

このグラフに矢印をインポートできません。

plotrix パッケージを使用して矢印を追加する方法、または ggplot2 で矢印を描画する方法は?

4

1 に答える 1

13

データの設定(からdput):

polar <- structure(list(degree = c(120L, 30L, -120L, 60L, 150L, -90L, 
-60L, 0L), value = c(0.5, 0.2, 0.2, 0.5, 0.4, 0.14, 0.5, 0.6)), .Names = c("degree", 
"value"), class = "data.frame", row.names = c(NA, -8L))

直線はかなり簡単に取得できます。セグメントdegreeが0ではなく開始することを確認する必要があります。

library(ggplot2)
base <- ggplot(polar, aes(x=degree, y=value))
p <- base + coord_polar()
p+ geom_segment(aes(y=0, xend=degree, yend=value))

ここに画像の説明を入力してください ただし、矢印を追加すると、バグがあるように見えます(?)-矢印の角度の計算では、座標変換は考慮されません。

library(grid)
p+ geom_segment(aes(y=0, xend=degree, yend=value) ,
                arrow=arrow(length=unit(0.3,"cm")))

ここに画像の説明を入力してください あなたはあなた自身の矢じりを描くことによってこれを(一種の)ハックすることができます:

awid <- 2
p + geom_segment(aes(y=0, xend=degree, yend=value))+
    geom_segment(aes(y=value-0.05,yend=value,x=degree-awid/value,xend=degree))+
    geom_segment(aes(y=value-0.05,yend=value,x=degree+awid/value,xend=degree))

ここに画像の説明を入力してください

よく見ると、矢じりが完全に真っ直ぐではないことがわかります(大きくすると効果がよりはっきりしますawid)。

于 2012-05-09T13:47:00.933 に答える