Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何向绘图添加颜色边框?_R_Plot - Fatal编程技术网

R 如何向绘图添加颜色边框?

R 如何向绘图添加颜色边框?,r,plot,R,Plot,出于某些原因,我想在绘图中添加一个框架,如下所示: 我可以在绘图中执行此操作吗ggplot或qplot解决方案也受欢迎。谢谢。您可以绘制一个实心矩形,然后使用打印(..,vp=..)在其上绘制ggplot,稍微缩小 下面是一个很好的小函数示例: borderize <- function(plotObj, thick=2, color="orange", alpha=0.8) { # thick should be a value between (1, 100) # alpha

出于某些原因,我想在绘图中添加一个框架,如下所示:


我可以在
绘图中执行此操作吗
ggplot
qplot
解决方案也受欢迎。谢谢。

您可以绘制一个实心矩形,然后使用
打印(..,vp=..)
在其上绘制ggplot,稍微缩小

下面是一个很好的小函数示例:

borderize <- function(plotObj, thick=2, color="orange", alpha=0.8) {
  # thick should be a value between (1, 100)
  # alpha should be a value between (0, 1)

  # these could be modified for separate width/height thicknesses
  wd <- ht <-  (100 - thick) / 100
  x <- (1 - wd)  / 2 
  y <- (1 - ht) / 2

  # create a solid rectangle.  The plot will go over it. 
  grid.rect(y = 1, height = 1, just = c("center", "top"), gp=gpar(fill=color, alpha=alpha, lwd=0))

  # create the viewport
  vp.inner <- viewport(height=unit(ht, "npc"), width=unit(wd, "npc"), just=c("left","bottom"), y=y, x=x)

  print(plotObj, vp=vp.inner)

}
红色边框为
绘图
,蓝色边框为
面板


注意边框是如何侵蚀标签的

但是,使用
plot.background
的优点是可以将整个图形保存为一个对象;使用上面的
borderize
方法无法执行的操作

qplot(x= disp , y = wt , data = mtcars) +
  theme(plot.background = element_rect(colour="#CF8057",size=10))


这不是要求的。如果它是在基本图形中,那么它将是一个简单的框(lwd=5,col=“orange”)
@Dwin抱歉,我现在知道了。我必须使用plot.background,而不是panel.background。我更新我的答案。谢谢你的解决方案。目前我使用的是普通的
plot
,但我认为
ggplot
更灵活,值得深入研究。什么是神奇的数字
1.25
1.4
1.1
1.2
?好的,否则轴将被排除在外。扩展问题:如果我将plot导出到PNG,我怎样才能只导出框架内的部分?@ziyung,对于png,我认为最好问一个新问题。
plot.bg  <- theme(plot.background=element_rect(color="red", size=12))
panel.bg <- theme(panel.background=element_rect(color="blue", size=12))

plotObj + panel.bg + plot.bg
qplot(x= disp , y = wt , data = mtcars) +
  theme(plot.background = element_rect(colour="#CF8057",size=10))
set.seed(123); 
plot(x=rnorm(100, sd=1000), y=rnorm(100, sd=1000) ,ylab="", xlab="")
rect(xleft=par("usr")[1]*1.25, ybottom=par("usr")[3]*1.4, 
     xright=par("usr")[2]*1.1,ytop=par("usr")[4]*1.2, 
     lwd=5, border="orange", xpd=TRUE)