要在R
中绘制条形图的X轴标签,我可以这样使用text()
:
text(mean(bp), par("usr")[3] - 0.05*yDiff, xpd=NA, labels=journey, cex=0.9, font=2)
要绘制图例,我使用类似这样的东西:
legend("bottom", legend=abbrevLabels, fill=c(colors), xpd=NA, horiz=TRUE, bty="n",
cex=1.0, inset=c(0, -0.3), xjust=0, adj=0.035,
text.width=rep(meanLabelLen/7.5, length(legendLabels)))
此处的两个垂直偏移(图例的0.05*yDiff
和插入-0.3
的偏移)均位于Y轴空间中。由于各种原因,这对我来说是个问题。相反,我更喜欢以像素为单位的偏移量。也就是说,我真正想说的是:“将标签渲染到图形底部下方10个像素处。”
这怎么办?
答案 0 :(得分:0)
对于位于条形图下方(在此类图的较大网格的底部)的水平X轴标签的恒定垂直偏移,事实证明,将title
与line
属性一起使用行为/位置一致,与设备大小无关。这是我现在要做的:
title(xlab=journey, line=0, cex=0.8, font.lab=2, xpd=NA)
其中line
是整数,而0
最接近该图,而更大的整数则更远(在负Y方向上)。
对于图例,我无法给出一个恒定的垂直偏移,该偏移与网格尺寸或设备尺寸无关。这里有几点:
yjust
的legend
参数没有完全无效。我在网上寻找示例,但是无论我使用什么值,yjust
都是不行的。y
参数起作用,但遗憾的是, not 与x
的描述性属性结合使用;也就是说,如果x
设置为bottom
,则不能同时设置y
。我发现这种行为令人不安,因为我通常希望这些坐标彼此独立。要解决这些限制,请执行以下操作:
yInset <- 0.4 * (1.075 - par("fin")[2] / dev.size("in")[2])
legend(x='bottom', yjust=-0.75, inset=c(0, -yInset), legend=abbrevLabels, fill=c(colors), xpd=NA, horiz=TRUE, bty="n", cex=1.0, adj=0.035, text.width=rep(meanLabelLen/7.5, length(legendLabels)))
此逻辑有效地设置与网格尺寸和设备尺寸成比例的滑动Y偏移。根据经验确定的1.075
和0.4
的缩放/偏移因子确实很重要,但就目前而言就足够了。
如果上面提到的legend
的某些限制得到解决(或者在我误解了文档的情况下可能会得到更好的解释),将来会有所帮助。