将y轴转换为圆形半径

时间:2013-08-31 13:54:41

标签: r ggplot2

我有一个这样的圆圈图:

  dat <- data.frame(time = factor(rep(0:23,times = 20)),
                 count = sample(200,size = 480,replace = TRUE),
                 grp = sample(LETTERS[1:3],480,replace = TRUE))

ggplot(data = dat,aes(x = time,y  = count,fill = grp)) + 
    geom_bar(stat = "identity",position = "stack") + 
    coord_polar()

如何使y轴成为圆的半径并具有此价格?

像这样: enter image description here

1 个答案:

答案 0 :(得分:4)

如果您将geom_bar()更改为geom_line()并更改aes()来电,则会获得您想要的情节:

# set up the plotting environment
require('ggplot2')
theme_bw(base_size = 8, base_family = "")
# now generate the plot
p <- ggplot(data = dat,
            aes(x = time,
                y  = count,
                color = grp)) +    
    geom_line() + 
    coord_polar()

print(p)

这给了你:

enter image description here

目前看起来有点奇怪,因为你的时间数据只包括几小时。如果您有小数小时,您可能会看到更多信息。

下一步是通过计算新标签的好标签来固定轴标签,在y轴上设置断点,使用geom_text()伪造新的标签标签并使用{{杀死旧标签和标记1}}。

theme()

现在你有了你的情节:

enter image description here

使用ybreaks <- pretty(x = data$count, n = 5) p <- ggplot(data = data, aes(x = time, y = count, color = grp)) + geom_path() + coord_polar() + scale_y_continuous(breaks = ybreaks) + geom_text(data = data.frame(x = 0, y = ybreaks, label = ybreaks), aes(x = x, y = y, label = label), inherit.aes = F, size = 2) + theme(axis.text.y = element_blank(), axis.ticks.y = element_line(size = 0)) print(p) 设置断点和y轴上的标签的优点是轴标签会根据绘制的数据自动更改,并与网格线对齐。

你有一些摆弄来解决字体大小,但你大部分都在那里。有关如何执行此操作的详细信息,请查看the ggplot2 documentation