我已经在带有expression()
的图例标签中生成了一个下标,该下标将整个标签稍微向上移动并看上去很烂(中间是红色的)。
plot(1:10, type="l")
curve(x^2, col=2, add=TRUE)
curve(x^3, col=3, add=TRUE)
legend("bottomright", lty=1, col=3:1,
legend=c(expression(z>2),
expression(z==italic(z[1])),
expression(z==0)))
this great solution的帮助下,我将特定标签的y
位置乘以legend
文本的正确空格,然后将x
值移位我费力切丁的值。
a <- legend("bottomright", lty=1, col=3:1, trace=T,
legend=rep(" ", 3))
a$text$y[2] <- a$text$y[2]/1.043
text(a$text$x-.3, a$text$y, c(expression(z>2),
expression(z==italic(z[1])),
expression(z==0)), pos=4)
但是,找出正确的值可能是一种业余爱好,并且在将绘图发送到设备(例如pdf
)时可能并不可靠,因为plot
的输出例如是pdf
的大小是动态的(考虑各种layout
或pdf
大小)。
原因确实是expression()
,因为
mean(a$text$y[-2]) == a$text$y[2]
# [1] TRUE
我没有找到诸如legend.txt.y=c(1, 1.043, 1)
之类的选项,x
和y
似乎只接受标量。问题仍然存在,下标的标签偏移了多少。
可能有我忽略的选项,或者有任何解决方法可以将expression()
稍微向下移动一个因素或其他原因?]]
我已经在带有expression()的图例标签中生成了一个下标,该下标将整个标签略微向上移动并看上去很烂(中间是红色的)。 plot(1:10,type =“ l”)curve(x ^ 2,col = 2,add = ...
假设最终目标只是使图例条目均匀分布,您可以考虑在图例中的每个元素上使用phantom()
,以便保留相等的空间,但不绘制任何内容。尽管它确实会在图例的右侧创建少量空白,但这避开了计算调整的需要。在这种情况下,每个元素都无形地附加了“ i 1
这不是一个很好的答案,但是可以。 legend
函数用基数R编写。在其中定义了另一个函数text2
,该函数从主函数传递给它的...
参数中只有一个[x,y )向量。 adj
仅使用此单个参数写入所有标签,因此,我认为使用text2
函数进行的调整没有某种技巧或解决方法是不可能的。