更改径向条形图上的轴

时间:2012-03-09 22:23:06

标签: r ggplot2

我想制作一个径向堆叠条形图。我有这样的事情:

ggplot(diamonds, aes(clarity, fill= cut)) +  geom_bar()  + coord_polar()

产生如下情节: radial barchart

然而这非常拥挤。有没有办法改变轴,使这个条形图是空心的?我希望零开始不在圆的中心,但是,比如从中心开始半径的1/3或1/2。有关于此的任何想法吗?

2 个答案:

答案 0 :(得分:1)

你可以告诉coord_plot稍微扩大一点 - 这会在中间放一个小洞:

ggplot(diamonds, aes(clarity, fill= cut)) +  
    geom_bar()  + 
    coord_polar(expand=TRUE)

enter image description here

然后你可以控制y比例扩展(参数expand=...scale_y_continuous(...)。不幸的是我认为扩展是对称的,即如果你在底部添加空间(即在中间,你也将它添加到顶部(即外部):

ggplot(diamonds, aes(clarity, fill= cut)) +  
    geom_bar()  + 
    coord_polar(expand=TRUE) + 
    scale_y_continuous(expand=c(0.5, 0))

enter image description here

答案 1 :(得分:0)

我通过轴转换解决了类似的问题。此转换的作用是:

  • 将y轴0点偏移offset
  • 使用sqrt变换半径,以使条形区域与值相对应。

我用它来绘制一天中时间的直方图,偏移使较小的值更清晰可见。当然,圆形图只对季节性数据,方向数据,……有用。

require(ggplot2)
require(scales)

offset=2000
my_trafo_trans <- function() trans_new(
  "my_trafo",
  function(y){
    sign(y)*sqrt(abs(y))+offset^2
  }, 
  function(r){
    r^2+offset^2
  }
  )

ggplot(diamonds, aes(clarity, fill= cut)) +  
  geom_bar()  + 
  scale_y_continuous(limits=c(-1*offset, 15000)) + 
  coord_trans(y = "my_trafo") +
  coord_polar()

result of plot command