所以设置如下:
dat <- data.frame(a = c("longnameonthelefthandside"), b = c(sample(10)))
p <- ggplot(dat, aes(b,a)) + geom_point() + xlab("label")
我可以通过将unit
对象传递给hjust
来调整x轴标签:
p + opts(axis.title.x=theme_text(size=12,hjust=unit(0.3,"npc")))
但是有一些关于添加单位对象的东西(可能,根据?单位)我不会抓住:
u1 <- unit(0.5,"npc")
u2 <- unit(0.25,"npc")
p + opts(axis.title.x=theme_text(size=12,hjust=u1+u2))
产生以下错误:
Error in grid.Call("L_textBounds", as.graphicsAnnot(x$label), x$x, x$y, :
Polygon edge not found
In addition: Warning message:
In validDetails.text(x) : NAs introduced by coercion
作为进一步的背景,我试图通过Baptiste here
拼凑一些有些神秘的解决方法答案 0 :(得分:2)
Baptiste的代码包括对convertUnit
的调用。一旦你把它放回代码中,就会产生一个情节:
p + opts(
axis.title.x=theme_text(size=12,hjust=convertUnit(u1+u2, "npc", value=TRUE))
)
答案 1 :(得分:2)
在绘制的过程中,hjust的单位可能会隐式转换为数字。 所以,试试这个:
grid.lines(c(0.5, 0.5))
grid.text("orzorzorz", y=0.4, hjust=unit(0.25, "npc"))
grid.text("orzorzorz", y=0.5, hjust=unit(0.25, "mm"))
grid.text("orzorzorz", y=0.6, hjust=unit(0.25, "cm"))
grid.text("orzorzorz", y=0.7, hjust=0.25)
以及u1+u2
导致错误的原因是:
> c(u1+u2)
$fname
[1] "+"
$arg1
[1] 0.5npc
$arg2
[1] 0.25npc
绝对不能将其转换为数字。
所以,convertUnit是一种解决方法,但简单地说,hjust = c(u1)+c(u2)
就足够了。