Что вам нужно, так это возможность создать легенду, основанную на label=
эстете c. К сожалению, ответ заключается в том, что вы не можете - по крайней мере, нелегко использовать 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
, чтобы избежать наложения меток.
Ваши названия образцов достаточно короткие, где они имеет смысл, что вы можете добавить свои ярлыки на сам сюжет. Он может быть немного перегружен, поэтому я бы порекомендовал использовать функции 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)