如何在R的ggplot中为Y轴添加双标签?
解决Y轴刻度添加自定义标签的问题
直接通过scale_y_continuous()自定义Y轴的刻度标签即可,不需要额外添加副轴。修改后的完整代码如下:
ggplot(q19.long, aes(x = species, y = score, fill = species)) + geom_boxplot(alpha = 0.5) + labs(y = "Score", x = "", title = questiontitle) + theme(axis.text.x = element_blank(), axis.ticks.x = element_blank(), legend.title = element_blank()) + scale_fill_discrete(labels = c("Rat","Vampire fly","Blackberry","Smooth-billed ani","Goat","Frog","Cat","Guava","Dog","Elephant grass")) + # 自定义Y轴刻度与对应标签 scale_y_continuous( breaks = c(1, 2, 3, 4, 5), labels = c("1\n完全不同意", "2", "3", "4", "5\n完全同意") )
关键说明:
breaks参数指定要显示的Y轴刻度,这里保留1到5的全刻度labels参数对应每个刻度的显示文本,用\n实现换行,让自定义文字显示在刻度值下方,和目标图效果一致
如果不想修改原有刻度样式,也可以用手动添加文本的方式:
ggplot(q19.long, aes(x = species, y = score, fill = species)) + geom_boxplot(alpha = 0.5) + labs(y = "Score", x = "", title = questiontitle) + theme(axis.text.x = element_blank(), axis.ticks.x = element_blank(), legend.title = element_blank()) + scale_fill_discrete(labels = c("Rat","Vampire fly","Blackberry","Smooth-billed ani","Goat","Frog","Cat","Guava","Dog","Elephant grass")) + # 手动添加文本到对应刻度旁 annotate("text", x = -0.3, y = 1, label = "完全不同意", hjust = 1) + annotate("text", x = -0.3, y = 5, label = "完全同意", hjust = 1)
这种方式需要调整x参数来控制文本在Y轴侧的位置,适合保留原刻度显示的场景。
内容的提问来源于stack exchange,提问作者bernogarcia
相关产品推荐
相关产品推荐

