次のデータを使用して、素敵な (!) 極座標プロットを作成しようとしています。
gr1 <- c(0, 5, 15, 20, 30, 40)
gr3 <- c(0, 5, 10, 25, 40, 60, 80)
gr2 <- c(0, 15, 25, 30, 40)
df2<- data.frame (pos = c(gr1, gr2, gr3), group = c(rep(1, length(gr1)),
rep(2, length(gr1)), rep(2, length(gr1))))
inner circle segment to mark
first tier, group 1, between 15, 20
group 3, between 5, 10
between 40 to 60
second tier, group 1, between 15, 20
group 3, between 5, 10
between 10, 25
between 40 to 60
2 つの位置の間の間隔の間の 2 つの線の間の角度。
プロットする実際のデータには 2 つ以上の層があります。
マーカーは、セグメントまたは塗りつぶされた色などの他のマークのいずれかです。
可能であれば、異なるグループを色分けできます。
円セグメント マーキングの代替 (推奨)
ggplot2 で試してみました。
cx <- ggplot(df2, aes(x = pos, group = group) + geom_bar(width = 1, colour = "black"))
Error in aes(x = pos, group = group) + geom_bar(width = 1, colour = "black") :
non-numeric argument to binary operator
cx + coord_polar()
その他のトライアル:
df2$cpos <- cumsum (df2$pos)
cx <- ggplot(df2, aes(x = cpos, group = group) + geom_bar(width = 1, colour = "black"))
編集 1:
問題を説明するのはひどいかもしれないと思います。ここに説明付きの図があります。
位置 (位置) は連続スケールであり、極座標の角度は位置の値に依存する必要があります。1 つのグループが完了すると、再開されます。私はこのトリックに cumsum するためのトリックを行いました (間違っている可能性があります)。
編集 2:
次の回答により、質問に対する考えがさらに広がりました。これは改善されたバージョンですが、カラー マネージメントが機能していません。
df2$cpos <- cumsum (df2$pos)
df2$y <- rep(3, length (df2$cpos))
cx <- ggplot(df2, aes(y = y, x = cpos))
cx + geom_bar(aes(stat = "identity",fill="yellow", colour = "yellow" )) +
geom_point(aes(color = factor(group)), pch = 18, size = 2) + coord_polar() +
scale_fill_manual(values=c("#CC6666", "#9999CC", "#66CC99"))+ ylim(0,3)
ylim (2,3) を設定しようとすると、同様に機能しないセグメントのように見えます。
Error in data$y[data$y == -Inf] <- range$y.range[1] :
replacement has length zero