ggplot绘制离散变量直方图报错及百分比展示方法求助
问题解决:离散变量直方图报错与百分比直方图绘制
1. 报错原因与解决
你遇到的报错是因为geom_histogram()默认针对连续型变量做分组统计(stat_bin),而你的code是离散的分类变量(字母),所以触发错误。
解决方法很简单,直接用geom_bar()替代geom_histogram()——geom_bar()专门用于离散变量的计数展示,默认就是stat="count",完美适配你的场景:
ggplot(data = tbl, aes(x = code)) + geom_bar()
当然也可以按报错提示,在geom_histogram里指定stat="count",效果和上面一样,但geom_bar()更贴合离散变量的使用场景,可读性更强。
2. 绘制百分比直方图
要展示每个字母的占比,有两种常用方式:
方法1:直接在ggplot中计算百分比
利用ggplot的after_stat()函数,在绘图时实时计算占比,再通过scale_y_continuous()把数值转换成百分比格式:
library(scales) # 需要加载scales包来生成百分比标签 ggplot(data = tbl, aes(x = code)) + geom_bar(aes(y = after_stat(count / sum(count)))) + scale_y_continuous(labels = percent) + labs(y = "占比")
方法2:先预处理数据再绘图
如果需要更灵活的控制,可以先手动计算每个字母的占比,再用geom_col()绘图:
tbl_percent <- tbl %>% count(code) %>% mutate(percent = n / sum(n)) ggplot(data = tbl_percent, aes(x = code, y = percent)) + geom_col() + scale_y_continuous(labels = percent) + labs(y = "占比")
两种方法效果一致,选你觉得顺手的就行。
内容的提问来源于stack exchange,提问作者SiH
相关产品推荐
相关产品推荐

