使用ggplot2复刻指定样式棒棒糖图的技术问询
调整后的ggplot2棒棒糖图代码
根据目标图的样式,我们将图表改为横向布局并优化元素样式,以下是修改后的代码:
# 加载库 library(tidyverse) # 创建数据 df1 <- data.frame( year = c(2014, 2014, 2017, 2017, 2021, 2021), value = c(1, -1, 1, -1, 1, -1) ) # 绘制图表 ggplot(data = df1, aes(y = year, x = value)) + # 绘制连接点与中间轴线的线段 geom_segment(aes(x = 0, xend = value, y = year, yend = year), color = "gray50") + # 绘制贯穿所有年份的中间垂直轴线 geom_segment(aes(x = 0, xend = 0, y = 2013.8, yend = 2021.2), color = "black", linewidth = 1) + # 绘制实心点,按正负值区分颜色 geom_point( size = 6, aes(color = factor(value)), shape = 19, show.legend = FALSE ) + # 设置点的配色 scale_color_manual(values = c("-1" = "#4a6fe3", "1" = "#ff9234")) + # 配置坐标轴刻度 scale_y_continuous(breaks = c(2014, 2017, 2021)) + scale_x_continuous(limits = c(-1.2, 1.2), breaks = c(-1, 0, 1)) + # 优化主题样式 theme_minimal() + theme( panel.grid = element_blank(), axis.title = element_blank(), axis.text.x = element_text(size = 10), axis.text.y = element_text(size = 10, face = "bold") )
关键调整说明
- 布局转换:将年份映射到y轴、数值映射到x轴,匹配目标图的横向棒棒糖结构
- 线段优化:连接线段改为从中间轴线(x=0)延伸至对应点,中间轴线改为加粗垂直黑线
- 点样式调整:使用实心圆形,按正负值设置蓝橙配色,调整点的大小以匹配目标图视觉效果
- 主题精简:隐藏网格线,保留核心刻度,优化文字样式提升可读性
- 坐标轴范围:设置x轴范围避免点超出图表边界
内容的提问来源于stack exchange,提问作者MYaseen208
相关产品推荐
相关产品推荐

