web-dev-qa-db-ja.com

ggplot2:stat_smoothが使用されている場合の透明な凡例の背景

私は2つのプロットを持っています。滑らかな線のあるもの:

library(splines)
library(ggplot2)

ggplot(mtcars, aes(hp, qsec)) + stat_smooth(aes(group = cyl,
       colour = factor(cyl)),
       method = "glm",
       formula = y ~ ns(x, 1),
       level = 1e-9,
       size = I(1)) +
  theme(panel.background=element_rect(fill="transparent",colour=NA),
        plot.background=element_rect(fill="transparent",colour=NA),
        legend.key = element_rect(fill = "transparent", colour = "transparent"))

とないもの:

ggplot(mtcars, aes(hp, qsec)) +
  geom_point(aes(group = cyl, colour = factor(cyl))) +
  theme(panel.background=element_rect(fill="transparent",colour=NA),
        plot.background=element_rect(fill="transparent",colour=NA),
        legend.key = element_rect(fill = "transparent", colour = "transparent"))

最初のプロットで白または透明の凡例の背景を取得するにはどうすればよいですか?そして、なぜ同じテーマコマンドが2番目のプロットで仕事をするのですか?

11
skeletor

説明されているように、灰色の背景はstat_smooth()から来ているようです ここ 。信頼区間を非アクティブ化するse=FALSEを追加すると、修正されるようです。

ggplot(mtcars, aes(hp, qsec)) + stat_smooth(aes(group = cyl,
   colour = factor(cyl)),
   method = "glm",
   formula = y ~ ns(x, 1),
   level = 1e-9,
   size = I(1), 
   se = FALSE) +
   theme(panel.background=element_rect(fill="transparent",colour=NA),
      plot.background=element_rect(fill="transparent",colour=NA),
      legend.key = element_rect(fill = "transparent", colour = "transparent"))

enter image description here

13
cocquemas