在R绘图环境中,是否有办法指定轴标签位置和轴名称之间相对于绘图边界的通用距离?例如,考虑以下测试图的Y轴:
pdf('test1.pdf',height=3.5,width=5.0)
plot(1,ylab=NA,yaxt='n',ann=F)
mtext('Y-Axis Label',side=2,line=1.5)
axis(2, pos=0.595,tick=F)
dev.off()
我分别使用了line=1.5
和pos=0.595
函数中的mtext
和axis
参数优化了轴标签和轴名称的放置。但是,一旦生成具有不同宽度(即width=8.0
)的单独图,该位置就不再类似于我在原始图形中使用5.0宽度指定的物理距离。因此,问题是-如何指定这些参数,以使标签和名称与图形边界的距离完全相同,而不管绘图宽度如何。可以使用通用单位(即像素)指定吗?
谢谢!
答案 0 :(得分:2)
尝试grconvertX
,但是您必须跟踪如何需要输出。 mtext(..., line = )
是行,而axis(..., pos = )
是用户坐标。另外,您将需要在适当的地方使用grconvertY
(即,在第1面和第3面)
pdf('test1.pdf',height=3.5,width=5.0)
plot(1,ylab=NA,yaxt='n',ann=F)
mtext('Y-Axis Label',side=2,line=1.5)
axis(2, pos=0.595,tick=F)
line <- grconvertX(1.5, 'lines', 'device')
pos <- grconvertX(0.595, 'user', 'device')
dev.off()
pdf('test1-again.pdf',height=3.5,width=5)
plot(1,ylab=NA,yaxt='n',ann=F)
mtext('Y-Axis Label',side=2, line = grconvertX(line, 'device', 'lines'))
axis(2, pos = grconvertX(pos, 'device', 'user'), tick = FALSE)
dev.off()
pdf('test1-wide.pdf',height=3.5,width=8)
plot(1,ylab=NA,yaxt='n',ann=F)
mtext('Y-Axis Label',side=2, line = grconvertX(line, 'device', 'lines'))
axis(2, pos = grconvertX(pos, 'device', 'user'), tick = FALSE)
dev.off()