web-dev-qa-db-ja.com

凡例ggplot2の周りにボックスを描画します

ggplot2にカスタム凡例を含むプロットを作成しました。凡例のすべてのアイテムの周りにボックスを描画しようとしましたが、個々のアイテムの周りにのみボックスを描画できました。すべてのアイテムの周りに1つのボックスだけを作成するにはどうすればよいですか?

library(ggplot2)

ggplot(mpg, aes(displ, cty)) + 
  geom_point(aes(shape = "Data")) +
  stat_smooth(aes(linetype = "Regression"), method = "lm", 
              formula = y ~ x, se = FALSE, colour = 1, size = 0.5) +
  scale_shape_manual(values = 1) +
  labs(shape = "", linetype = "") +
  theme_classic() + 
  theme(panel.border = element_rect(colour = "black", fill=NA),
        aspect.ratio = 1, axis.text = element_text(colour = 1, size = 12),
        legend.background = element_rect(linetype = 2, size = 0.5, colour = 1))

enter image description here

12

_legend.background_長方形は_legend.box.background_長方形と重複しているようです。簡単な修正は、legend.background = element_blank()を設定することです。

しかし、私の意見では、伝説の間隔はspacingいです。凡例のタイトルは、タイトルセットがなくてもスペースを取りすぎます。これを修正するには、legend.title = element_blank()を設定します。また、2つの凡例の間隔が大きすぎます。これを修正するには、スペースをゼロに設定しますlegend.spacing.y = unit(0, "mm")

_library(ggplot2)

ggplot(mpg, aes(displ, cty)) + 
  geom_point(aes(shape = "Data")) +
  stat_smooth(aes(linetype = "Regression"), method = "lm", 
              formula = y ~ x, se = FALSE, colour = 1, size = 0.5) +
  scale_shape_manual(values = 1) +
  labs(shape = "", linetype = "") +
  theme_classic() + 
  theme(legend.title = element_blank(),
        legend.spacing.y = unit(0, "mm"), 
        panel.border = element_rect(colour = "black", fill=NA),
        aspect.ratio = 1, axis.text = element_text(colour = 1, size = 12),
        legend.background = element_blank(),
        legend.box.background = element_rect(colour = "black"))
_

enter image description here

12
Sandy Muspratt