繁体   English   中英

为 geom_text 标签创建图例

[英]Create Legend for geom_text labels

我想创建一个散点图 plot ,每个点都绘制为数字而不是圆形。 我需要一个图例,将散点图 plot 中的数字 label 映射到样本名称。

我当前的尝试使用此代码:

plot<-ggplot(df_mds,aes(x=x,y=y,group=interaction(Group,Sample)))+geom_text(aes(label=Label,color=Group,group=Sample),show.legend =T)
plot<-plot+guide()
plot<-plot+labs(x="Leading logFC dimension 1", y="Leading logFC dimension 2")

使用这些数据:

使用此数据框中的数据

并创建此图:

并产生这张图

上面的图表几乎正是我想要的,除了我需要一个将“标签”列中的值映射到“样本”列中的值的图例。

我看过这篇文章,但我不知道如何组合不同的形状来创建新数字。

任何帮助将不胜感激。

您正在寻找的是基于label=美学创建图例的能力。 不幸的是,答案是你不能——至少不能轻易使用ggplot 我建议使用替代方法。 在这里,我使用以下示例数据集提供了两个选项:

scatter.plot <- data.frame(
    sampleName=paste0('Sample_',1:18),
    x=sample(1:10, 18, replace=TRUE),
    y=sample(1:10, 18, replace=TRUE),
    id=1:18,
    grp=c(rep('Group A', 6), rep('Group B', 6), rep('Group C',6))
)

在您的点上使用标签和ggrepel package 以避免标签重叠。

您的示例名称足够短,您可以在 plot 本身上添加标签。 它可能会有点拥挤,所以我建议使用 ggrepel package 中的geom_text_repelgeom_label_repel函数来帮助进行ggrepel绘图。 美学和各种参数可以根据您的喜好进行调整:

ggplot(scatter.plot, aes(x,y)) +
    geom_point(aes(color=grp), size=2.5) +
    geom_text_repel(
        aes(label=sampleName), color='gray45',
        min.segment.length = 0, size=3,
        force=10, direction='y') +
    theme_bw()

在此处输入图像描述

使用颜色和形状

不确定这是否适合您,但如果您调整组的形状和样本的形状,您可以使用ggplot相当容易地为每个样本获取开箱即用的图例。 当然,它需要颜色才能正确区分:

ggplot(scatter.plot, aes(x,y)) +
    geom_point(aes(shape=grp, color=sampleName), size=2)

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM