在R的ggplot中重命名数据标签、调整排序及散点颜色
解决R语言ggplot箱线图的标签、顺序和散点颜色问题
核心修改思路
不用改动原始数据,通过调整因子列的水平属性实现标签替换和显示顺序调整,同时单独设置散点颜色,完全不影响你已有的统计结果。
完整可运行代码
library(ggplot2) library(dplyr) # 读取数据(保留你原有读取逻辑) ratios <- read.table("qPCRSummary.csv", dec = ".", sep = ",", header = T, stringsAsFactors = T) # 关键步骤:修改因子标签+指定显示顺序 ratios$Sample <- factor( ratios$Sample, # 按你要的顺序列出原始样本名 levels = c("S16", "S19", "S17", "S20", "S127"), # 对应替换成新的显示标签,把括号里的描述改成你需要的内容 labels = c("#16 (auto)", "#19 (自定义描述)", "#17 (自定义描述)", "#20 (自定义描述)", "#127 (X-linked)") ) # 绘图:散点强制设为黑色 ggplot(ratios, aes(x= Sample, y= RedEx, fill= Sample)) + geom_boxplot() + # 这里直接指定color和fill为黑色,脱离箱体的颜色映射 geom_dotplot(binaxis="y", stackdir="center", dotsize=0.5, color="black", fill="black") + # 颜色值对应5个样本,去掉你原来多余的颜色项 scale_fill_manual(values=c("aquamarine2", "lightskyblue2", "#2ecc71","#0099f8", "#e74c3c")) + theme_classic() + labs( x = "Transgenic Line", y = "Average expression" )
关键修改点说明
- 修正你之前的错误操作:你用
mutate("#16 (auto)" = S16)是在新建列,但S16是因子的水平值不是列名,所以报错。正确做法是直接修改现有Sample列的因子水平标签,而非新建列。 - 控制x轴顺序:
factor()里的levels参数决定了绘图时的显示顺序,按你需要的顺序列出原始样本名即可。 - 散点改黑色:在
geom_dotplot中直接设置color="black"和fill="black",强制散点颜色为黑色,不再和箱体颜色绑定。
可选tidyverse风格写法
如果你习惯用dplyr链式语法,也可以这样修改因子:
ratios <- ratios %>% mutate( Sample = Sample %>% # 先调整顺序 fct_relevel("S16", "S19", "S17", "S20", "S127") %>% # 再替换标签 fct_recode( "#16 (auto)" = "S16", "#127 (X-linked)" = "S127", "#19 (自定义描述)" = "S19", "#17 (自定义描述)" = "S17", "#20 (自定义描述)" = "S20" ) )
内容的提问来源于stack exchange,提问作者Bugboi
相关产品推荐
相关产品推荐

