我想在R中的现有绘图中添加子图。子图(插图)应该具有不同的背景颜色。我尝试了以下方法:
#install.packages("TeachingDemos", dependencies=T)
library(package="TeachingDemos")
d0 <- data.frame(x = rnorm(150, sd=5), y = rnorm(150, sd=5))
d0_inset <- data.frame(x = rnorm(1500, sd=5), y = rnorm(1500, sd=5))
plot(d0)
subplot(
fun = plot(
d0_inset
, col = 2
, pch = '.'
, mgp = c(1,0.4,0)
, ann = F
, cex.axis=0.5
)
, x = grconvertX(c(0.75,1), from='npc')
, y = grconvertY(c(0,0.25), from='npc')
, type = 'fig'
, pars = list(
mar = c(1.5,1.5,0,0) + 0.1
, bg = "blue" # this should change the background color
)
)
在subplot()
的帮助下,它代表pars
:
在运行
fun
之前要传递给par的参数列表。
更改绘图的背景颜色似乎非常困难,因为图形参数在plot()
中具有不同的含义。因此,必须使用par()
设置背景颜色。但为什么这对subplot
不起作用? (我也尝试将绘图函数放入调用par()
和plot()
的extaernal函数中,但这没有用。)
为什么子图不能正常工作?
答案 0 :(得分:3)
bg
的{{1}}参数会更改设备的背景颜色而不是图表的背景颜色。由于您只是在已经打开和使用的设备上添加绘图,因此不可能(因为绘制了纸笔方式par
绘图)。相反,您可以做的事情(建立在this previous answer上)如下:
base
编辑:如果您希望包含注释的区域为蓝色,我看到的另一个解决方案是在绘制子图之前绘制矩形(使用您给子图的坐标)功能):
plot(d0)
subplot(fun = {plot(d0_inset, mgp = c(1,0.4,0), ann = F, cex.axis=0.5);
rect(par("usr")[1],par("usr")[3],par("usr")[2],par("usr")[4],col = "blue");
points(d0_inset, col=2, pch=".") },
x = grconvertX(c(0.75,1), from='npc'),
y = grconvertY(c(0,0.25), from='npc'),
pars = list(mar = c(1.5,1.5,0,0) + 0.1), type="fig")