Вложенная легенда, основанная на цвете и форме - PullRequest
3 голосов
/ 13 февраля 2020

Я хочу сделать xy-график из вложенных групп (Группа и Подгруппа), где точки окрашены по Группе и имеют форму по Подгруппе. Ниже приведен минимальный пример:

DATA<-data.frame(
  Group=c(rep("group1",10),rep("group2",10),rep("group3",10) ),
  Subgroup = c(rep(c("1.1","1.2"),5), rep(c("2.1","2.2"),5), rep(c("3.1","3.2"),5)),
  x=c(rnorm(10, mean=5),rnorm(10, mean=10),rnorm(10, mean=15)),
  y=c(rnorm(10, mean=3),rnorm(10, mean=4),rnorm(10, mean=5))
)
ggplot(DATA, aes(x=x, y=y,colour=Group, shape=Subgroup) ) +
  geom_point(size=3) 

xyplot1

Однако, поскольку в действительности у меня гораздо больше подгрупп, чем можно легко определить на основе имеющихся формы, которые я хочу повторить в каждой группе одинаковые формы. Ниже приведен тот же код, но с дополнительным столбцом (Shape), определяющим форму:

DATA<-data.frame(
  Group=c(rep("group1",10),rep("group2",10),rep("group3",10) ),
  Subgroup = c(rep(c("1.1","1.2"),5), rep(c("2.1","2.2"),5), rep(c("3.1","3.2"),5)),
  Shape = as.character(c(rep(c(1,2),15) ) ), 
  x=c(rnorm(10, mean=5),rnorm(10, mean=10),rnorm(10, mean=15)),
  y=c(rnorm(10, mean=3),rnorm(10, mean=4),rnorm(10, mean=5))
)

ggplot(DATA, aes(x=x, y=y,colour=Group, shape=Shape) ) +
  geom_point(size=3)

xyplot2

Теперь формы и цвета такие, как я хочу их. Однако легенда больше не перечисляет подгруппы. То, что я хочу, это легенда, в которой перечислены все подгруппы в каждой соответствующей группе. Что-то вроде:

  • Group1
    • 1.1
    • 1.2
  • Group2
    • 2.1
    • 2.2
  • Group3
    • 3.1
    • 3.2

(В идеале это будет одна вложенная легенда. Если вложенные легенды невозможны, возможно, это могут быть три отдельные легенды с группами в качестве заголовков)

Это то, что может быть достигнуто и как?

Спасибо

...