首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用R ggplot2中的位置=“填充”在条形图上绘制标签

用R ggplot2中的位置=“填充”在条形图上绘制标签
EN

Stack Overflow用户
提问于 2016-11-16 00:16:45
回答 1查看 7.3K关注 0票数 2

如何使用ggplot2来用计数标签“填充”条形图?

我可以为“堆叠”的酒吧这么做。但我真的很困惑。

下面是一个使用dplyr和mpg数据集的可重复示例

代码语言:javascript
复制
library(ggplot)
library(dplyr)

mpg_summ <- mpg %>%
  group_by(class, drv) %>%
  summarise(freq = n()) %>%
  ungroup() %>%
  mutate(total = sum(freq), 
         prop = freq/total)

g <- ggplot(mpg_summ, aes(x = class, y = prop, group = drv))
g + geom_col(aes(fill = drv)) +
  geom_text(aes(label = freq), position = position_stack(vjust = .5))

但是,如果我试图绘制填充栏的计数,它就不起作用了。

代码语言:javascript
复制
g <- ggplot(mpg_summ, aes(x=class, fill=drv))
g + stat_count(aes(y = (..count..)/sum(..count..)), geom="bar", position="fill")  +
  scale_y_continuous(labels = percent_format())

此外,如果我尝试:

代码语言:javascript
复制
g <- ggplot(mpg_summ, aes(x=class, fill=drv))
g + geom_bar(aes(y = freq), position="fill")  +
  geom_text(aes(label = freq), position = "fill") +
  scale_y_continuous(labels = percent_format())

我得到:

代码语言:javascript
复制
Error: stat_count() must not be used with a y aesthetic.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-16 01:10:55

我漏掉了最后一个问题的填报部分。这应该能让你达到目的:

代码语言:javascript
复制
library(ggplot2)
library(dplyr)

mpg_summ <- mpg %>%
  group_by(class, drv) %>%
  summarise(freq = n()) %>%
  ungroup() %>%
  mutate(total = sum(freq), 
         prop = freq/total)

g <- ggplot(mpg_summ, aes(x = class, y = prop, group = drv))
g + geom_col(aes(fill = drv), position = 'fill') +
  geom_text(aes(label = freq), position = position_fill(vjust = .5))

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40622017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档