ggplot2添加顶部右侧次坐标轴并保留小刻度、移除次轴标签问题问询
解决方法
调整次坐标轴的参数配置即可解决你提到的两个问题,修改后完整代码如下:
data.bw <- structure(list(num = c(88L, 58L, 15L, 11L, 14L, 29L, 34L, 40L, 24L, 20L, 3L, 1L, 1L), bar = c(0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5), group = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "A", class = "factor")), class = "data.frame", row.names = c(NA, -13L)) library(ggplot2) library(ggh4x) library(scales) # 用到alpha函数需要加载该依赖包 ggplot(data.bw, aes(bar,num, fill = group)) + geom_bar(stat = 'identity', width = 1) + scale_fill_manual(values = alpha(c("red"), .3)) + # 保留所需填充样式,删除重复定义项 scale_y_continuous( minor_breaks = seq(0, 90, by = 2), breaks = seq(0, 90, by = 10), limits = c(0, 90), expand = expansion(mult = c(0, 0)), # 次轴新增guide参数显示小刻度,新增labels=NULL隐藏刻度标签 sec.axis = dup_axis(name = NULL, labels = NULL, guide = "axis_minor"), guide = "axis_minor" ) + scale_x_continuous( minor_breaks = seq(0, 14, by = 0.5), breaks = seq(0, 14, by = 2), limits = c(0, 14), expand = expansion(mult = c(0, 0)), # 次轴参数调整逻辑同上 sec.axis = dup_axis(name = NULL, labels = NULL, guide = "axis_minor"), guide = "axis_minor" ) + theme_bw() + theme( panel.border = element_rect(colour = "black", fill=NA, size=1), plot.background = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank() )
关键修改说明
- 次坐标轴默认不会继承主轴的guide配置,需要在
dup_axis()中手动指定guide = "axis_minor",才能正常显示次轴的小刻度 - 原有代码中仅设置
name = NULL只会隐藏次轴的标题,要隐藏次轴的刻度文字需要额外添加labels = NULL参数 - 原代码重复定义了两次
scale_fill_manual,删除冗余项避免样式被意外覆盖

内容的提问来源于stack exchange,提问作者neuron
相关产品推荐
相关产品推荐

