ggplot2设置scale_y_continuous后Y轴标签不显示问题求助
问题根因
Y轴标签不显示和scale_y_continuous的配置没有关系,是你写的theme配置把Y轴标题强制隐藏了:
theme(axis.title.y = element_blank(),
这行代码的作用就是直接删除Y轴标题元素,不管你在ylab()、scale_y_continuous()里给Y轴设置什么文本,只要这行配置存在,Y轴标签永远不会渲染出来,你之前试的所有标签设置方法不生效都是这个原因。
修复方法
直接删掉theme里的axis.title.y = element_blank()这行即可。
另外你代码里重复设置了两次Y轴标签:一次是ylab("My y label"),一次是scale_y_continuous("My y label"),重复设置不会报错但属于冗余代码,建议把轴标签统一放到labs()里配置,逻辑更清晰。
修复后的完整可运行代码:
library(ggplot2) scores<-c(2,0,0,0,0,1,12,9,10,11,23,47,71,93,180,125,147,88,52,51,9,2) Frequency <- c(0:21) Final_Score = scores tsdata <- data.frame(Final_Score, Frequency) p <- ggplot(data = tsdata, aes(x = Frequency, y = scores)) + geom_bar(stat = "identity",aes(fill = scores), colour = "white", width = 1) + scale_fill_gradient(low = "#E6FFFF", high = "steelblue") + geom_text(aes(label=scores), vjust=-0.4, color ="black", size=3.5) + labs( title = "", x = "Final Score", y = "My y label" ) + scale_x_continuous(limits=c(-0.5, 21.5), breaks = c(0:21)) + theme( axis.line.y = element_line(), axis.line.x = element_line(), axis.text = element_text(size=10), axis.title = element_text(size=14,face="bold"), panel.grid.major.y = element_line(colour = "lightgray"), panel.background = element_rect(fill = "white") ) p
补充说明
ggplot2中theme的元素显示规则优先级高于标签、刻度等内容设置类函数:只要对应元素在theme中被设置为element_blank(),无论你怎么修改内容配置,对应元素都不会显示。后续调图如果遇到标签、刻度线不显示的问题,可以优先检查theme里是不是把对应元素设为了隐藏状态。
内容的提问来源于stack exchange,提问作者Jas
相关产品推荐
相关产品推荐

