R绘图color属性中alpha函数作用及细胞类型绘图颜色重复解决方法
问题1:代码中第一个alpha的作用
你看到的第一个alpha是scales包提供的alpha()函数的函数名,该函数的核心作用是接收一组颜色输入,为其添加指定透明度后返回标准十六进制颜色编码,供R基础绘图的col参数使用。
函数的参数结构为alpha(颜色向量, alpha = 透明度数值):
- 第一个位置传入的是待添加透明度的颜色值,你代码中传入的
c(1,2,...12)[因子索引][shuffle]就是这个参数的取值,R会自动将数字匹配为默认调色板对应的颜色 - 第二个
alpha = .5是函数的显式参数,用来设置透明度,这部分你理解是正确的
问题2:避免颜色重复的解决方案
你扩充到12个数字后仍然出现颜色重复,根本原因是R基础绘图的默认调色板palette()默认只有8种颜色,超过8的数字会循环复用前面的颜色,比如数字9对应默认调色板第1位的黑色,自然会出现重复。
你可以用以下方案解决:
- 方案1:使用支持足够颜色数量的专业调色板
比如用RColorBrewer包的Paired调色板(刚好有12种区分度高的颜色),修改代码如下:# 提前加载依赖包 library(RColorBrewer) # 生成12种不重复颜色,再添加透明度 cell_cols <- brewer.pal(12, "Paired")[factor(colData(seLX_MET)$cell_type)][shuffle] plot(reducedDims(seLX_MET)$UMAP[shuffle, ], asp = 1, pch = 16, xlab = "UMAP-1", ylab = "UMAP-2", col = alpha(cell_cols, alpha = .5)) - 方案2:手动指定12种不重复的十六进制颜色
如果你对颜色有自定义需求,可以直接替换为你选定的12个十六进制颜色值,示例:# 自定义12种颜色,可自行替换为需要的色值 custom_cols <- c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3", "#FF7F00", "#FFFF33", "#A65628", "#F781BF", "#999999", "#1B9E77", "#D95F02", "#7570B3") cell_cols <- custom_cols[factor(colData(seLX_MET)$cell_type)][shuffle] plot(reducedDims(seLX_MET)$UMAP[shuffle, ], asp = 1, pch = 16, xlab = "UMAP-1", ylab = "UMAP-2", col = alpha(cell_cols, alpha = .5)) - 方案3:使用
viridis包的调色板
如果需要对色弱友好的颜色,可使用viridis包的调色板取12个离散色,区分度更高。
内容的提问来源于stack exchange,提问作者Yulia Kentieva
相关产品推荐
相关产品推荐

