如何用离散/连续值而不是计数来绘制ggplot2极坐标?

时间:2017-03-28 19:19:39

标签: r ggplot2 polar-coordinates

使用以下代码

dft <- data.frame(f1=c('A', 'B', 'C', 'A', 'A', 'D'), 
                  f2=c("F1", "F1", "F2", 'F2', 'F3', 'F1'))
d <- ggplot(dft, aes(x =f1, fill=f2))
d <- d + geom_bar(width = 1, position = "fill")
d + coord_polar("x") 

我得到这个图表

enter image description here

扇区数由f1决定,记录计数相应地在每个f1上产生f2的比例。

但我希望根据连续/离散的聚合值来填充扇区。

而不是

dft <- data.frame(f1=c('A', 'B', 'C', 'A', 'A', 'D'), 
                  f2=c("F1", "F1", "F2", 'F2', 'F3', 'F1'))

我有

dft2 <- data.frame(f1=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'), 
                   f2=c("F1", "F2", "F3", "F1", "F2", "F3", "F1", "F2", "F3"), 
                   value=c(5,10,15, 2,30,30, 10, 10,20))

可能吗?

由于

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

dft2 <- data.frame(f1=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'), 
                   f2=c("F1", "F2", "F3", "F1", "F2", "F3", "F1", "F2", "F3"), 
                   value=c(5,10,15, 2,30,30, 10, 10,20))

d2 <- ggplot(dft2, aes(x = f1, y = f2, fill = value)) + 
  geom_col(width = 1) +
  scale_fill_gradient2(low = 'dodgerblue1', high = 'dodgerblue4') +
  coord_polar("x") +
  theme_minimal() +
  theme(axis.text.y = element_blank())

它使用geom_coly美学,将其映射到f2,而fillvalue维度。 颜色只是为了好玩。根据需要更改或删除。

enter image description here

如果您希望每个f2区域相对于其value区域将y美学更改为value

d2 <- ggplot(dft2, aes(x = f1, y = value, fill = value)) + 
  geom_col(width = 1, position = 'fill', color = 'black', size = .5) +
  scale_fill_gradient(low = 'dodgerblue1', high = 'dodgerblue4') +
  coord_polar("x") +
  theme_minimal() +
  theme(axis.text.y = element_blank())

enter image description here