web-dev-qa-db-ja.com

ggplot2にパネルの境界線を追加します

以下のプロットの周囲に完全な境界線を配置するように求められました。

enter image description here

panel.border = element_rect(colour = "black")を使用すると、プロットが空白になります。

theme_bw()は通常のテーマと同じ機能を持たないため使用できません。現在使用しているコードは以下のとおりです。

graph<-ggplot(d,aes(x=d$AOE, y=d$MEI)
            )+
  geom_point(shape=20, size=3)+
  geom_rug()+
  annotate("text", x = -1.1, y = 14000, label = "27/04/2011") +
  annotate("text", x = -1.3, y = 10400, label = "03/04/1974") +
  xlab("MEI")+
  ylab("AOE")+
  scale_y_log10()+
  theme(axis.text.y   = element_text(size=14),
        axis.text.x   = element_text(size=14),
        axis.title.y  = element_text(size=14),
        axis.title.x  = element_text(size=14),
        panel.background = element_blank(),
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        axis.line = element_line(colour = "black")
  )

graph 

完全な黒の境界線を取得する方法についてのアドバイスは大歓迎です!

36
Methexis

panel.borderを使用するには、fill=NAを使用して空白の塗りつぶしを指定する必要もあります。

これを試して:

library(ggplot2)

ggplot(mtcars, aes(mpg, disp)) + geom_point() + geom_rug() +
  theme(axis.text.y   = element_text(size=14),
        axis.text.x   = element_text(size=14),
        axis.title.y  = element_text(size=14),
        axis.title.x  = element_text(size=14),
        panel.background = element_blank(),
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        axis.line = element_line(colour = "black"),
        panel.border = element_rect(colour = "black", fill=NA, size=5)
  )

enter image description here

47
Andrie

theme_bw()theme()を一緒に使用できます。これは動作するはずです:

_# creating some data
set.seed(1)
d <- data.frame(MEI=rnorm(100), AOE=rlnorm(100, 10, 5))

# creating the plot
ggplot(d,aes(x=MEI, y=AOE)) +
  geom_point(shape=20, size=3) +
  geom_rug() +
  scale_y_log10() +
  theme_bw() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        panel.background = element_rect(colour = "black", size=4))
_

これは与える: enter image description here


theme_bw()なしで@Andrieに触発されたソリューションですが、_panel.background_の代わりに_panel.border_を使用します。

_ggplot(d,aes(x=MEI, y=AOE)) +
  geom_point(shape=20, size=3) +
  geom_rug() +
  scale_y_log10() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        panel.background = element_rect(colour = "black", size=4, fill=NA))
_

これにより、まったく同じプロットが得られます。 _panel.background_と_panel.border_の違いは、_panel.background_がプロットの下に描かれ、_panel.border_がプロットの上に描かれることです。

15
Jaap