📜  如何在 ggplot2 中绘制显示 R 百分比的堆积条?(1)

📅  最后修改于: 2023-12-03 14:52:17.680000             🧑  作者: Mango

如何在 ggplot2 中绘制显示 R 百分比的堆积条?

在 ggplot2 中绘制堆积条,需要使用 geom_bar() 函数,并通过 position = "fill" 参数来使条形图百分比化。下面是一个简单的示例:

library(ggplot2)

# 构造数据集
df <- data.frame(
  x = c("A", "B", "C", "D"),
  y = c(20, 30, 40, 10),
  z = c(30, 10, 20, 40)
)

# 绘制条形图
ggplot(df, aes(x, fill = factor(y))) +
  geom_bar(position = "fill") +
  scale_y_continuous(labels = scales::percent_format())

上面的代码将绘制出一个堆积条形图,其中 x 轴为 A、B、C、D 四个类别,y 轴表示每个类别所占的百分比。在代码中,我们通过 fill 参数将类别 y 转换为堆积条的填充色,然后使用 position = "fill" 参数将条形图变成百分比格式。最后,我们使用 scales::percent_format() 函数使 y 轴的刻度标签以百分比形式显示。

如果要对每个类别进行分组,可以在 aes() 函数中使用多个变量,如下所示:

ggplot(df, aes(x, fill = factor(y), group = z)) +
  geom_bar(position = "fill") +
  scale_y_continuous(labels = scales::percent_format())

上面的代码将按照 yz 两个变量进行分组,并绘制出相应的堆积条形图。

绘制堆积条形图需要注意以下几点:

  • 在使用 fill 参数时,变量必须是分类变量(factor),否则填充颜色将无法显示。
  • 在使用 position = "fill" 参数时,y 轴的范围将限制在 0 到 1 之间,因此需要使用 scale_y_continuous() 函数将刻度标签转换为百分比形式。
  • 在使用 group 参数时,需要注意设置正确的分组变量,否则堆积条形图将无法正确分组。

参考文献: