我正在尝试使用以下数据创建漂亮的(!)极坐标图。
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
两个位置之间的间隔两条线之间的角度。
我的真实数据中有两层以上要绘制。
标记可能是段或其他标记,例如填充颜色。
如果可能,可以对不同的组进行颜色编码。
带圆形标记的替代方案(首选)
我用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:
我想我可能很难解释这个问题。这是带有解释的图。
pos(位置)是一个连续的刻度,极坐标的角度应该取决于位置值的位置。一组完成后它将重新启动。我做了一个技巧来完成这个技巧(我可能错了)。
编辑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