【发布时间】:2017-12-23 05:05:23
【问题描述】:
这是一个简化的绘图:
env <- data.frame(site = c('BLK','DUC','WHP','BLK','DUC','WHP','BLK','DUC','WHP'),
sal = c(5,6,3,2,4,5,6,8,4),
date = c(2013,2013,2013,2015,2015,2015,2017,2017,2017))
sitelist <- c('BLK','DUC','WHP')
par(mar=c(3,5,3,6), xpd = T)
plot(sal~date, data = env, type = 'n', ylim = c(0,10), ylab = 'Salinity',
bty = 'n', xlab = '')
abline(v=2016, col = 'khaki', lwd = 20)
abline(mean(env$sal), 0, lty = 3)
for (ii in seq_along(sitelist)) {
i <- sitelist[ii]; lines(sal[site==i] ~ date[site==i], data = env,
col = c(4,2,5)[ii], lwd = 2,
lty = c(1,2,3)[ii]);
points(sal[site==i] ~ date[site==i], data = env,
pch = c(0,1,2)[ii], col = c(4,2,5)[ii])}
legend('topright', title = 'sites', inset=c(-0.2,0), lty = c(1,2,3),
col = c(4,2,5), lwd = 2, sitelist,
pch = c(0,1,2))
正如所写,这段代码生成了一个绘图,其中abline 函数创建了超出绘图边界的线条,这要感谢xpd=T。但是,我不想设置xpd=F,因为我无法在边界之外绘制我的图例。解决方案必须是使用xpd=F 在边界之外绘制图例的方法,或者是绘制在边界处停止的线条的方法。理想情况下,该解决方案将使用基本程序并且相当标准,因此我可以将其放入我的大约 20 个地块中,而无需进行太多自定义。
我尝试使用segments,但对分段的圆形边缘不满意,因为我的垂直线应该是一种阴影区域以指示特定时间段。
【问题讨论】:
-
为什么不在 abline 调用中设置 xpd=F?