为 geom_text 图层添加图例以解释标签
Add a legend for a geom_text layer to explain labels
考虑以下示例,其中进行了散点,并且只有“重要”点被着色和标记。
genes <- read.table("https://gist.githubusercontent.com/stephenturner/806e31fce55a8b7175af/raw/1a507c4c3f9f1baaa3a69187223ff3d3050628d4/results.txt", header = TRUE)
genes$Significant <- ifelse(genes$padj < 0.05, "FDR < 0.05", "Not Sig")
ggplot(genes, aes(x = log2FoldChange, y = -log10(pvalue))) +
geom_point(aes(color = Significant)) +
scale_color_manual(values = c("red", "grey")) +
theme_bw(base_size = 12) + theme(legend.position = "bottom") +
geom_text_repel(
data = subset(genes, padj < 0.05),
aes(label = Gene),
size = 5,
box.padding = unit(0.35, "lines"),
point.padding = unit(0.3, "lines")
)
它产生了下面的情节
现在假设标签实际上是首字母缩略词,并且它们具有真实的全名(例如,“DOK6”是“Duo Ocarino Kayne 6”的首字母缩写词)。是否可以为图添加图例,其中键是图上使用的标签,条目是标签的全长名称?
首先,我为另一个只显示重要 Gene
的图例添加了 Gene2
。\
接下来,Gene2
作为 fill
添加到 aes
。 (只有 color
会影响 geom_point
上点的颜色)。\
最后,为第二个图例添加了scale_fill_discrete
。您需要做的只是在 Full names here
.
处注释 full-length 名称列
genes$Gene2 <-ifelse(genes$padj<0.05, genes$Gene, NA)
ggplot(genes, aes(x = log2FoldChange, y = -log10(pvalue),
fill=Gene2)) +
geom_point(aes(color = Significant)) +
scale_color_manual(values = c("red", "grey")) +
theme_bw(base_size = 12) + theme(legend.position = "bottom") +
geom_text_repel(
data = subset(genes, padj < 0.05),
aes(label = Gene),
size = 5,
box.padding = unit(0.35, "lines"),
point.padding = unit(0.3, "lines")
) +
scale_fill_discrete(labels=paste0(genes$Gene,': ',' Full names here'),
name='Significant genes') +
theme(legend.position = 'right')
输出
考虑以下示例,其中进行了散点,并且只有“重要”点被着色和标记。
genes <- read.table("https://gist.githubusercontent.com/stephenturner/806e31fce55a8b7175af/raw/1a507c4c3f9f1baaa3a69187223ff3d3050628d4/results.txt", header = TRUE)
genes$Significant <- ifelse(genes$padj < 0.05, "FDR < 0.05", "Not Sig")
ggplot(genes, aes(x = log2FoldChange, y = -log10(pvalue))) +
geom_point(aes(color = Significant)) +
scale_color_manual(values = c("red", "grey")) +
theme_bw(base_size = 12) + theme(legend.position = "bottom") +
geom_text_repel(
data = subset(genes, padj < 0.05),
aes(label = Gene),
size = 5,
box.padding = unit(0.35, "lines"),
point.padding = unit(0.3, "lines")
)
它产生了下面的情节
现在假设标签实际上是首字母缩略词,并且它们具有真实的全名(例如,“DOK6”是“Duo Ocarino Kayne 6”的首字母缩写词)。是否可以为图添加图例,其中键是图上使用的标签,条目是标签的全长名称?
首先,我为另一个只显示重要 Gene
的图例添加了 Gene2
。\
接下来,Gene2
作为 fill
添加到 aes
。 (只有 color
会影响 geom_point
上点的颜色)。\
最后,为第二个图例添加了scale_fill_discrete
。您需要做的只是在 Full names here
.
genes$Gene2 <-ifelse(genes$padj<0.05, genes$Gene, NA)
ggplot(genes, aes(x = log2FoldChange, y = -log10(pvalue),
fill=Gene2)) +
geom_point(aes(color = Significant)) +
scale_color_manual(values = c("red", "grey")) +
theme_bw(base_size = 12) + theme(legend.position = "bottom") +
geom_text_repel(
data = subset(genes, padj < 0.05),
aes(label = Gene),
size = 5,
box.padding = unit(0.35, "lines"),
point.padding = unit(0.3, "lines")
) +
scale_fill_discrete(labels=paste0(genes$Gene,': ',' Full names here'),
name='Significant genes') +
theme(legend.position = 'right')
输出