我试图添加数据标签以显示给定x类别的y值的总和。这是我使用的代码:
library(ggplot2)
gg <- ggplot(vgsales, aes(x = Genre, y = Global_Sales, fill = Genre)) +
geom_col() +
geom_text(aes(x = Genre, y = Global_Sales, label = Global_Sales), stat = "sum")
print(gg)
Run Code Online (Sandbox Code Playgroud)
我想将标签放置在每个条上方,并仅显示给定x的所有y值的总和。我该如何完成?
编辑:我试图使用提到的一些指南,结果是这样的:
因此,标签似乎相互重叠,并且报告了各个Global_Sales总和。有没有一种方法可以仅将流派的Global_Sales报告为标签?
通过使用该aggregate函数从现有数据框架中创建另一个数据框架,我能够找到解决方案。结果是:
library(ggplot2)
m3 <- aggregate(vgsales$Global_Sales, by=list(Genre=vgsales$Genre), FUN = sum)
m3 <- as.data.frame(m3)
names(m3) <- c("Genre", "Global_Sales")
gg <- ggplot(m3, aes(x = Genre, y = Global_Sales, fill = Genre)) +
geom_col() +
geom_text(aes(label = Global_Sales), vjust = -0.5)
print(gg)
Run Code Online (Sandbox Code Playgroud)
编辑:数据可以在这里找到:视频游戏销售(通过Kaggle)
非常快速的答案是
+ geom_text(aes(label = Global_Sales), vjust = -0.5)
Run Code Online (Sandbox Code Playgroud)
小智 5
修改此网站的示例,我认为您应该能够执行以下操作:
library(ggplot2)
df <- data.frame( x = factor(c(1, 1, 2, 2)), y = c(1, 3, 2, 1), grp = c("a", "b", "a", "b"))
ggplot(data = df, aes(x, y, group = grp)) +
geom_col(aes(fill = grp), position = "dodge") +
geom_text(aes(label = mean(y), y = y + 0.05), position = position_dodge(0.9), vjust = 0)
Run Code Online (Sandbox Code Playgroud)
所以,基本上,只需使 label=mean(Global_Sales) 即可。将 y 定位为 Global_Sales+0.05 会使其略高于条形图,以便清晰可见。 这是我制作的剧情。希望该链接有效。
| 归档时间: |
|
| 查看次数: |
6217 次 |
| 最近记录: |