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)