如何用ggplot绘制仅含整体蓝色边框的堆叠柱状图?
解决ggplot堆叠柱状图仅显示整体边框的问题
你当前的代码会给堆叠柱状图的每个分块都添加蓝色边框,要实现仅为整个柱状列添加蓝色边框、去除内部分隔线的效果,可以通过以下方法修改:
原问题代码与效果
原代码:
library(ggplot2) test=as.data.frame(cbind(a=c(1,1,2,3), b=1:4, c=as.character(1:4))) ggplot(test) + geom_bar(aes(x=a, y=b, fill=c), colour="blue", stat="identity")
原效果:
修改后的代码与说明
library(ggplot2) # 建议直接用data.frame创建数据,避免cbind转换的潜在问题 test <- data.frame(a = c(1,1,2,3), b = 1:4, c = as.character(1:4)) ggplot(test) + # 绘制堆叠柱状图,去掉内部分块的边框 geom_bar(aes(x = a, y = b, fill = c), colour = NA, stat = "identity") + # 为每个x分组的总高度添加整体蓝色边框 stat_summary(aes(x = a, y = b), fun = sum, # 计算每个分组的y值总和 geom = "col", # 用柱状图形式绘制 fill = NA, # 填充透明,只保留边框 colour = "blue", # 边框颜色 size = 1) # 可根据需求调整边框粗细
原理说明
- 第一层
geom_bar设置colour=NA,彻底移除所有内部分块的分隔线,只保留堆叠的填充色块。 - 第二层
stat_summary自动计算每个x分组的y值总和,绘制一个与堆叠柱总高度一致的“空柱子”(透明填充),仅显示其蓝色边框,刚好覆盖整个堆叠柱的外围,达成仅显示整体边框的效果。
内容的提问来源于stack exchange,提问作者quick2063
相关产品推荐
相关产品推荐

