You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ggplot2无法识别字符型变量名,箱图绘制异常求助

解决ggplot2箱图无法识别变量的问题

嘿,我一眼就看出问题出在哪啦!你在ggplot()的aes()函数里给变量名加了引号,这会让R把它们当成固定的字符串文本,而不是去读取你数据框里对应的列,这就是为什么生成的箱图异常啦。

错误原因分析

你原来的代码:

ggplot(p.p.n, aes("Sample type", "FUBP1 expression")) + geom_boxplot()

这里有两个小问题:

  1. 你引用的数据集是p.p.n,但你说你的数据框叫expression,应该是笔误吧?
  2. 更关键的是,aes()里的变量名不需要加引号!引号会让ggplot把"Sample type"当成一个单一的x轴类别,所有数据都被归到这一个类别下,自然画不出分两组的箱图。

修正后的代码

首先确保用对数据集,然后去掉变量名的引号,如果列名里有空格,也可以用反引号`把列名包起来(两种写法都可行):

# 加载ggplot2包(如果没提前加载的话)
library(ggplot2)

# 写法1:明确标注x/y轴,用反引号包裹带空格的列名
ggplot(expression, aes(x = `Sample type`, y = `FUBP1 expression`)) + 
  geom_boxplot()

# 写法2:省略x=和y=,直接按顺序写变量名
ggplot(expression, aes(`Sample type`, `FUBP1 expression`)) + 
  geom_boxplot()

额外美化建议(可选)

如果想让图更清晰美观,可以添加标题、调整坐标轴标签或配色:

ggplot(expression, aes(x = `Sample type`, y = `FUBP1 expression`, fill = `Sample type`)) + 
  geom_boxplot(alpha = 0.7) +
  labs(title = "FUBP1 Expression Comparison",
       x = "Sample Type",
       y = "FUBP1 Expression Level") +
  theme_minimal() +
  scale_fill_manual(values = c("#E69F00", "#56B4E9"))

这样就能画出分'Tumor'和'Neighboring tissue'两组的正常箱图啦,试试吧!

内容的提问来源于stack exchange,提问作者Felipe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:54:28