如何在ggplot中创建条形图轮廓?附实现示例代码
用ggplot2绘制条形图轮廓
要实现仅显示条形边框的效果,你可以通过以下两种方式修改代码:
方法一:使用geom_bar快速实现
直接利用geom_bar,将填充色设为透明,只保留边框:
library(tidyverse) level <- c("a", "b", "c", "d", "e", "f", "g") value <- c(8.1, 5.6, 3.2, 4.4, 3.5, 2.5, 1.8) tbl <- tibble(level = level, value = value) ggplot(data = tbl, aes(x = level, y = value)) + geom_bar(stat = "identity", fill = NA, color = "black", size = 1) + # 填充透明,设置边框颜色和粗细 theme_bw()
方法二:使用geom_rect自定义边框
如果需要更精细地控制条形的位置和边框样式,可以用geom_rect手动绘制每个条形的轮廓:
library(tidyverse) level <- c("a", "b", "c", "d", "e", "f", "g") value <- c(8.1, 5.6, 3.2, 4.4, 3.5, 2.5, 1.8) tbl <- tibble(level = level, value = value) %>% mutate( x_num = as.numeric(factor(level)), # 将分类变量转为数值 x_min = x_num - 0.4, # 条形左边界 x_max = x_num + 0.4 # 条形右边界 ) ggplot(data = tbl) + geom_rect( aes(xmin = x_min, xmax = x_max, ymin = 0, ymax = value), fill = NA, color = "black", size = 1 ) + scale_x_continuous(breaks = tbl$x_num, labels = tbl$level) + # 还原分类标签 theme_bw()
两种方法都能实现你想要的条形轮廓效果,第一种更简洁,第二种适合需要调整条形宽度、位置等自定义场景。
内容的提问来源于stack exchange,提问作者SiH
相关产品推荐
相关产品推荐

