ggplot去除坐标轴与绘图区域间的面板边框并设置坐标轴起始于数据起始位置
嘿,先帮你理清术语问题——你说的这个“坐标轴与数据绘图区域之间的边框”,对应的正确术语是panel border(绘图面板边框),而你之前用的plot.background是整个绘图的背景(包含标题、图例等外围区域),这也是为什么之前的代码没达到预期效果的原因~
接下来给你完整的解决方案,刚好能同时实现“去掉边框空隙”+“坐标轴从数据起始位置开始”两个需求:
library(ggplot2) library(dplyr) ggplot(data = diamonds %>% head(40), aes(x = x, y = y)) + geom_point() + # 移除绘图面板的边框,同时去掉面板背景(可选,看你需要) theme(panel.border = element_blank(), panel.background = element_blank(), # 重新添加坐标轴的线条,避免去掉边框后坐标轴消失 axis.line = element_line(color = "black")) + # 取消坐标轴两端的默认扩展间距,让坐标轴贴合数据的首尾 scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0))
我拆解下关键步骤的作用:
panel.border = element_blank():直接移除围绕绘图数据区的边框,也就是你说的红色区域对应的部分axis.line = element_line(color = "black"):因为去掉面板边框后,默认的坐标轴线条会跟着消失,所以手动添加回来,保证坐标轴可见expand = c(0, 0):ggplot默认会在坐标轴两端留一点空隙,这个参数就是把空隙完全取消,让坐标轴的起点和终点刚好对齐数据的最小/最大值,完美贴合数据区
如果之后你还需要调整坐标轴线条的样式(比如粗细、颜色),直接在axis.line里加参数就行,比如axis.line = element_line(color = "darkgray", size = 0.8)。
内容的提问来源于stack exchange,提问作者pluke
相关产品推荐
相关产品推荐

