[英]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_repel
和geom_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.