R语言ggplot中含百分号列名绘图报错的解决方案咨询
解决ggplot中列名含百分号的绘图错误
没问题,完全可以保留列名里的百分号完成绘图!你遇到的错误是因为ggplot的aes()函数会把包含特殊符号(比如%)的列名误解析成R的运算符,导致语法出错。之前用反引号没生效,大概率是没在aes()内部正确包裹列名,试试下面两种方法:
方法1:在aes()内用反引号包裹含特殊字符的列名
把y=Values_in%改成y=Values_in%``(注意反引号是键盘左上角的符号,不是单引号),这样就能明确告诉R这是一个列名,不是运算符组合。
方法2:使用.data代词引用列名
这是tidyverse推荐的方式,更清晰也能避免特殊字符解析问题,写法是y=.data$Values_in%``。
完整可运行的测试代码
先构造你的测试数据框:
test_data_frame <- as.data.frame(rnorm(n=10, mean=5, sd=1)) test_data_frame[,2] <- sample(1:2, 10, replace = TRUE) colnames(test_data_frame) <- c("Values_in%", "Labels_assign") # 保留百分号的列名
然后用方法1的绘图代码:
library(ggplot2) ggplot(test_data_frame, aes(x=factor(Labels_assign), y=`Values_in%`, fill=factor(Labels_assign))) + stat_boxplot(geom ='errorbar') + geom_boxplot() + ggtitle("Box-Whisker-Plot") + xlab("X-Axis") + ylab("Y-Axis") + theme(plot.title = element_text(face="bold", size=16, hjust=0.5)) + theme(axis.title.x = element_text(face="bold", size=12)) + theme(axis.title.y = element_text(face="bold", size=12)) + theme(legend.title = element_text(face="bold")) + scale_fill_brewer(palette="Pastel2", name="Cluster")
或者用方法2的版本:
ggplot(test_data_frame, aes(x=factor(Labels_assign), y=.data$`Values_in%`, fill=factor(Labels_assign))) + stat_boxplot(geom ='errorbar') + geom_boxplot() + ggtitle("Box-Whisker-Plot") + xlab("X-Axis") + ylab("Y-Axis") + theme(plot.title = element_text(face="bold", size=16, hjust=0.5)) + theme(axis.title.x = element_text(face="bold", size=12)) + theme(axis.title.y = element_text(face="bold", size=12)) + theme(legend.title = element_text(face="bold")) + scale_fill_brewer(palette="Pastel2", name="Cluster")
两种方法都能正常生成箱线图,同时保留列名里的百分号。
内容的提问来源于stack exchange,提问作者SCW16
相关产品推荐
相关产品推荐

