将面板边框添加到ggplot2

Met*_*xis 36 plot r ggplot2

我被要求在下面的情节周围放置一个完整的边框:

在此输入图像描述

使用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 
Run Code Online (Sandbox Code Playgroud)

任何关于如何获得全黑边框的建议将非常感谢!

And*_*rie 49

要使用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)
  )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Jaa*_*aap 17

您可以使用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))
Run Code Online (Sandbox Code Playgroud)

这给了: 在此输入图像描述


没有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))
Run Code Online (Sandbox Code Playgroud)

这将给出完全相同的情节.之间的区别panel.background,并panel.borderpanel.background绘制的情节之下,并panel.border绘制在图的顶部.


Mil*_*ain 11

如果您使用任何选项panel.,则在刻面时,每个单独的刻面周围都会有一个边框。如果您想要整个图的外部有边框,包括标题等,请使用plot.background. 例如:

library(ggplot2)

ggplot(mtcars, aes(mpg, disp)) + geom_point() + geom_rug() +
  labs(title = "Hello plot!") +
  facet_wrap(~cyl) +
  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"),
        plot.background = element_rect(colour = "black", fill=NA, size=5)
  )
Run Code Online (Sandbox Code Playgroud)

由reprex 包(v2.0.0)创建于 2021-06-22