如何使用 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_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())
使用下面的代码
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_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())