簡體   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