R语言绘制并排条形图时B+、C+等级标签显示异常如何解决
问题原因
- 核心问题出在
data.frame()的默认参数设置上:R的data.frame()默认开启check.names = TRUE,会自动将列名中不符合变量命名规则的字符(比如+)替换为.,因此你预设的B+、C+列名在数据生成阶段就已经被改为B.、C.,最终导致x轴标签显示异常,代码本身没有语法错误,属于参数默认值带来的非预期效果。
修改方案
你可以任选一种,也可以同时使用双重保障:
- 创建数据框时关闭列名检查:在
data.frame()参数中添加check.names = FALSE,禁止R自动修改列名。 - 手动指定barplot的x轴标签:在
barplot()中添加names.arg参数,直接传入你想要显示的等级标签列表。
修正后完整代码
# 创建数据时关闭列名检查 data <- as.matrix(data.frame("A" = c(18,7), "B+" = c(3,2), "B" = c(3,3), "C+" = c(6,0), "C" = c(7,0), "D" = c(0,4), "E" = c(5,23), check.names = FALSE)) barplot(data, col = c("red","blue"), beside = TRUE, xlab = "Grade", ylab = "Frequency", # 可选:手动指定标签进一步确保显示正确 names.arg = c("A","B+","B","C+","C","D","E")) legend("topleft", c("IFC6503-A","IFC6510"), fill = c("red","blue"), inset = c(.01,0) )
内容的提问来源于stack exchange,提问作者Jonathan Pangkey
相关产品推荐
相关产品推荐

