使用以下代码
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决定,记录计数相应地在每个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))
可能吗?
由于
答案 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_col
和y
美学,将其映射到f2
,而fill
按value
维度。
颜色只是为了好玩。根据需要更改或删除。
如果您希望每个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())