在ggplot中使用barplot而不按组折叠

using barplot in ggplot without collapsing by groups

我想使用 ggplot 创建条形图,但不按(分类)x 汇总观察结果。例如,这是我想要使用 R 基本绘图系统的结果:

library(ggplot2) 
data <- data.frame(lab = c("a", "b", "b", "c", "a"),
                   val = c(2, 5, 6, 3, 1))

barplot(data$val, names.arg = data$lab)

这就是我想要的:

但是,如果我使用 ggplot,这就是我得到的:

ggplot(data, aes(lab, val)) + geom_bar(stat = "identity")

使用ggplot得到我想要的情节的正确方法是什么?谢谢!

您可以沿 lab 值创建一个新变量作为 x,然后重新标记它们。

ggplot(data, aes(as.character(seq_along(lab)), val)) + geom_bar(stat = "identity") + 
  scale_x_discrete("lab", labels = c("1" = "a", "2" = "b", "3" = "b", "4" = "c", "5" = "a"))