Как удалить неиспользуемые пределы легенды в scale_color_manual из легенды ggplot2 - PullRequest
0 голосов
/ 26 апреля 2019

Мне нужно сделать несколько графиков со схожими данными, чтобы все группы оставались одного цвета между графиками. Я смог определить цвета для своих групп, используя scale_fill_manual и установив мои values и limits. Использование breaks не сохраняло тот же цвет между графиками, но уровни решили эту проблему.

Однако теперь я хотел бы удалить неиспользуемые группы из легенды, поскольку не все графики содержат все группы, и кажется, что limits переопределяет любую опцию breaks или drop=TRUE, которую я добавляю.

Есть ли способ удалить эти неиспользуемые значения, а также использовать ограничения для сохранения цвета между группами без необходимости явного удаления его вручную?

В приложении приведено изображение одного из графиков, которые я пытаюсь создать, но с неиспользованными пределами все еще в легенде.

[График с избыточными пределами в легенде] [1]

Ниже приведен код, аналогичный тому, что я пытаюсь. Используя это, я хотел бы, чтобы "неизвестные Chroococcales" автоматически исключались из легенды о графике y и "неизвестные Oscillatoriophycideae" удалялись из обоих x & y .

Я бы хотел, чтобы он не использовал неиспользованные лимиты, независимо от того, какой лимит (т.е. не нужно предварительно указывать / знать неиспользованные лимиты).

x <- data.frame ("Genus" =c("unknown Cyanobacteria","Dolichospermum" ,"Planktothrix" ,"Other", "Microcystis"
,"unknown Synechococcaceae" ,"unknown Chroococcales","unknown Oscillatoriophycideae","Pseudanabaena","Synechococcus", "unknown Cyanobacteria","Dolichospermum" ,"Planktothrix" ,"Other", "Microcystis"
,"unknown Synechococcaceae"), "RelativeAB"= c( 22, 35, 46, 71, 44, 27, 17, 87, 67, 44, 17, 88, 15, 77, 99, 20), factor= c( "control", "control", "control", "control", "pulex", "pulex", "pulex", "pulex" ,"magna", "magna", "magna", "magna", "dilution", "dilution", "dilution", "dilution"))

y <- data.frame ("Genus" =c("unknown Cyanobacteria","Dolichospermum" ,"Planktothrix" ,"Other", "Microcystis"
,"unknown Synechococcaceae" ,"unknown Oscillatoriophycideae","Pseudanabaena","Synechococcus", "unknown Cyanobacteria","Dolichospermum" ,"Planktothrix" ,"Other", "Microcystis","unknown Synechococcaceae"), "RelativeAB"= c( 22, 35, 46, 71, 44, 27, 17, 87, 67, 44, 17, 15, 77, 99, 20), factor= c( "control", "control", "control", "pulex", "pulex", "pulex", "pulex" ,"magna", "magna", "magna", "magna", "dilution", "dilution", "dilution", "dilution"))

colorscyano <-c("#CC0000", "#FF6000", "#CC9900", "#336600", "#3333FF", "#9933CC", "#FF66CC", "#66FFFF", "#99FF33", "#FFFF00")
breakscyano <- c("unknown Cyanobacteria"
                 ,"Dolichospermum"
                 ,"Planktothrix"
                 ,"Pseudanabaena"
                 ,"Synechococcus"
                 ,"Other"
                 ,"Microcystis"
                 ,"unknown Synechococcaceae"
                 ,"unknown Chroococcales"
                 ,"unknown Oscillatoriophycideae")

labscyano <-c(expression("Unknown" ~"cyanobacteria")
              ,expression(paste(italic("Dolichospermum")))
              ,expression(paste(italic("Planktothrix")))
              ,expression(paste(italic("Pseudanabaena")))
              ,expression(paste(italic("Synechococcus")))
              ,"Other"
              , expression(paste(italic("Microcystis")))
              , expression (paste("unknown", ~italic("Synechococcaceae")))
              , expression (paste("unknown",~italic("Chroococcales")))
              , expression (paste("unknown",~italic("Oscillatoriophycideae"))))

ggplot(x, aes(x=factor, y=RelativeAB, fill=Genus)) + 
  geom_bar(stat="identity", size=0.5, color="black")+
scale_fill_manual(values = colorscyano, limits= breakscyano, labels=labscyano)+
  theme_classic()

ggplot(y, aes(x=factor, y=RelativeAB, fill=Genus)) + 
  geom_bar(stat="identity", size=0.5, color="black")+
scale_fill_manual(values = colorscyano, limits= breakscyano, labels=labscyano)+
  theme_classic()```


  [1]: https://i.stack.imgur.com/akiVF.png
...