如何使用 discret/continuous 值而不是计数来绘制 ggplot2 极坐标?

How to plot ggplot2 polar with discret/continuous values instead of counting?

使用下面的代码

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") 

我得到这张图表

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

但我希望根据 continuous/discrete 聚合值填充扇区。

而不是

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))

这可能吗?

谢谢

你可以试试这个:

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 维度映射。 颜色只是为了好玩。根据需要更改或删除。

如果您希望每个 f2 区域相对于其 valuey 美学更改为 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())