使用R的ggplot2包移除绘图图例:opts()与theme()失效问题求助
解决ggplot2图例无法移除的问题
你说得对,opts()确实在新版ggplot2里被弃用了,改用theme()是正确方向,但你的代码没生效,大概率是因为需要直接针对fill这个映射关闭图例,而不是只靠theme全局设置。
试试把代码里的theme(legend.position = "none")换成guides(fill = "none"),或者两者都加上,就能彻底移除图例了。修改后的完整代码如下:
chickFlick <- read.delim("http://www.discoveringstatistics.com/docs/ChickFlick.dat", header = TRUE) chickFlickBar <- ggplot(chickFlick, aes(film, arousal, fill = film)) chickFlickBar + stat_summary(fun = mean, geom = "bar") + stat_summary(fun.data = mean_cl_normal, geom = "errorbar", width = 0.2) + labs(x = "Film", y = "Mean Arousal", fill = "Gender") + guides(fill = "none") # 直接关闭fill对应的图例
解释下:你的代码里是通过fill = film来给不同电影的柱子上色,对应的图例是绑定在fill这个美学映射上的。guides(fill = "none")可以直接关闭这个特定的图例,比全局的theme设置更精准,有时候能解决theme设置没生效的问题。
如果还是不行,检查下你的ggplot2版本,更新到最新版再试——旧版本偶尔会有这类兼容性问题。
内容的提问来源于stack exchange,提问作者user21767262
相关产品推荐
相关产品推荐

