首页 > 解决方案 > 如何突出显示 Bioconductor Enhancedvolcano 中的特定基因?

问题描述

我喜欢这个包EnhancedVolcano。我的数据是 RNAseq,我用 DESeq2 对其进行分析。我想将结果绘制为火山图,在其中突出显示我选择的基因列表pick_genes。我已成功更改 pointSize 并且我正在使用 SelectLab 突出显示,但是当我想为所选基因赋予另一种颜色时,我会卡住。我在结果文件中添加了一个逻辑向量,指定要突出显示的基因。我努力了

col = ifelse... 

它不起作用,所有点都是灰色的。

EnhancedVolcano(res_complete,
                lab = res_complete$gene_name,
                x = "log2FoldChange",
                y = "pvalue",
                pCutoff = 10e-3,
                FCcutoff = 1,
                xlim = c(-10, 10),
                ylim = c(0, -log10(10e-12)),
                col = (ifelse(res_complete$picked_genes == T, "forestgreen", "grey60")),
                pointSize = (ifelse(res_complete$picked_genes == T, 5, 0.5)),
                labSize = 2.5,
                selectLab = picked_genes,
                shape =  16,
                shade = res_complete$picked_genes == T,
                shadeFill = "forestgreen",
                shadeSize = 5,
                shadeLabel = res_complete$picked_genes,
                boxedLabels = TRUE,
                title = "DESeq2 results",
                subtitle = "Differential expression HC vs RA",
                caption = "FC cutoff, 1; p-value cutoff, 10e-3",
                legendPosition = "right",
                legendLabSize = 14,
                colAlpha = 0.9,
                drawConnectors = TRUE,
                hline = c(10e-8),
                widthConnectors = 0.2)

我也试过:

colCustom =ifelse...

但是我收到一条错误消息...

错误:美学长度必须为 1 或与数据 (58735) 相同:颜色

EnhancedVolcano(res_complete,
                lab = res_complete$gene_name,
                x = "log2FoldChange",
                y = "pvalue",
                pCutoff = 10e-3,
                FCcutoff = 1,
                xlim = c(-10, 10),
                ylim = c(0, -log10(10e-12)),
                colCustom = (ifelse(res_complete$picked_genes == T, "forestgreen", "grey60")),
                pointSize = (ifelse(res_complete$picked_genes == T, 5, 0.5)),
                labSize = 2.5,
                selectLab = picked_genes,
                shape =  16,
                shade = res_complete$picked_genes == T,
                shadeFill = "forestgreen",
                shadeSize = 5,
                shadeLabel = res_complete$picked_genes,
                boxedLabels = TRUE,
                title = "DESeq2 results",
                subtitle = "Differential expression HC vs RA",
                caption = "FC cutoff, 1; p-value cutoff, 10e-3",
                legendPosition = "right",
                legendLabSize = 14,
                colAlpha = 0.9,
                drawConnectors = TRUE,
                hline = c(10e-8),
                widthConnectors = 0.2)

有人能想出解决这个问题的办法吗?

标签: rggplot2bioconductoraesthetics

解决方案


我找到了,终于明白了。colCustom 每个点都需要一对,一个颜色和一个名称。我创建了矩阵键值

keyvals <- ifelse(
  res_complet$picked_genes < T, 'grey60',
           'forestgreen')
names(keyvals)[keyvals == 'forestgreen'] <- 'picked'
names(keyvals)[keyvals == 'grey60'] <- 'rest'

` 比我用它代替 col=

`

EnhancedVolcano(res_complete,
                lab = res_complete$gene_name,
                x = "log2FoldChange",
                y = "pvalue",
                pCutoff = 10e-3,
                FCcutoff = 1,
                xlim = c(-10, 10),
                ylim = c(0, -log10(10e-12)),
                pointSize = (ifelse(res_complete$picked_genes == T, 5, 0.5)),
                labSize = 2.5,
                shape = c(19, 19, 19, 19),
                selectLab = picked_genes,
                boxedLabels = TRUE,
                title = "DESeq2 results",
                subtitle = "Differential expression HC vs RA",
                caption = "FC cutoff, 1; p-value cutoff, 10e-3",
                legendPosition = "right",
                legendLabSize = 14,
                colCustom = keyvals,
                colAlpha = 0.9,
                drawConnectors = TRUE,
                hline = c(10e-8),
                widthConnectors = 0.2)

`

为了让所有点都可见,我在逻辑列 res_complete$picked_genes 之后对结果数据框进行了排序,并再次制作了火山。瞧


推荐阅读