在 ggplot2 / coord_polar 中显示具有不同半径和角度的饼图切片
Showing pie slices with different radii and angles in ggplot2 / coord_polar
我正在尝试使用 ggplot2 polar_coord
显示两个变量,一个变量将反映在饼图切片的宽度(即地壳的长度)中,第二个变量将反映在半径中(即切片的非地壳边的长度),这可能吗?
在下面的示例中,我希望 cat1 是饼图圆周的 4/20 (4+6+10),半径为 1,cat2 是圆周的 6/20,半径为4,cat3 为半径为 5 的圆周的 10/20。
df <- data.frame(
x = c("cat1", "cat2", "cat3"),
y = c(4, 6, 10),
z = c(1, 4, 5))
我得到的最接近的是相对于彼此大小正确的切片(下面的代码),但我希望切片填满整个饼图并且不受最大馅饼总周长的四分之一。
cxc <- ggplot(df, aes(x = x,
y = z,
width = y)) +
geom_bar(aes(fill=x), stat="identity", color = "black")
cxc + coord_polar()
这是你想要的吗?
library(dplyr)
df %>%
mutate(xmin = cumsum(lag(y, default = 0)),
xmax = cumsum(y)) %>%
ggplot(aes(xmin = xmin, xmax = xmax,
ymin = 0, ymax = z,
fill = x)) +
geom_rect(colour = "black") +
coord_polar()
我正在尝试使用 ggplot2 polar_coord
显示两个变量,一个变量将反映在饼图切片的宽度(即地壳的长度)中,第二个变量将反映在半径中(即切片的非地壳边的长度),这可能吗?
在下面的示例中,我希望 cat1 是饼图圆周的 4/20 (4+6+10),半径为 1,cat2 是圆周的 6/20,半径为4,cat3 为半径为 5 的圆周的 10/20。
df <- data.frame(
x = c("cat1", "cat2", "cat3"),
y = c(4, 6, 10),
z = c(1, 4, 5))
我得到的最接近的是相对于彼此大小正确的切片(下面的代码),但我希望切片填满整个饼图并且不受最大馅饼总周长的四分之一。
cxc <- ggplot(df, aes(x = x,
y = z,
width = y)) +
geom_bar(aes(fill=x), stat="identity", color = "black")
cxc + coord_polar()
这是你想要的吗?
library(dplyr)
df %>%
mutate(xmin = cumsum(lag(y, default = 0)),
xmax = cumsum(y)) %>%
ggplot(aes(xmin = xmin, xmax = xmax,
ymin = 0, ymax = z,
fill = x)) +
geom_rect(colour = "black") +
coord_polar()