如何控制插入R绘图图例的显示方式

如何控制插入R绘图图例的显示方式,r,legend,R,Legend,我试图强迫我的传奇人物在右下角,并与两轴齐平。现在,图例默认插入到绘图中的距离比我希望的要远(在x轴的中间)。我在这里和R文档中浏览了一下,发现“inset=”是一个可选参数,可以在legend函数中使用。我想这就是我如何实现我想要的。但是,当我尝试只输入一个数值(inset=0)时,图例最终与默认值位于同一位置。当我尝试输入两个数值参数(inset=c(0,-2))时,图例根本不会显示。我想我可能使用了不正确的语法,并尝试了inset=0:-2,但这也不起作用。我尝试过使用更高的值,这会导致图

我试图强迫我的传奇人物在右下角,并与两轴齐平。现在,图例默认插入到绘图中的距离比我希望的要远(在x轴的中间)。我在这里和R文档中浏览了一下,发现“inset=”是一个可选参数,可以在legend函数中使用。我想这就是我如何实现我想要的。但是,当我尝试只输入一个数值(inset=0)时,图例最终与默认值位于同一位置。当我尝试输入两个数值参数(inset=c(0,-2))时,图例根本不会显示。我想我可能使用了不正确的语法,并尝试了inset=0:-2,但这也不起作用。我尝试过使用更高的值,这会导致图例进一步嵌入,所以我知道这是正确的参数,但可能我没有给它正确的值?我还尝试更改“xjust=”和“yjust=”参数的值,这些参数似乎没有任何明显的影响。有人对我可能做错的事情有什么建议吗?附件是我的代码和当前打印输出(以及显示图例位置的箭头):

布局(矩阵(c(2,1),1,2,byrow=FALSE)) par(pty=“s”,mar=c(1,3,1,3),mgp=c(1.5,0.5,0)) 图(x1,y1, xlab=“总计X1”, ylab=“总计X2”, type=“n”, ylim=c(-3,2), xlim=c(-2.5,2.5), cex.lab=0.7, cex轴=0.7) 文本(x1,y1,标签=SedCombined2$Site, col=c(“#D55E00”、“#000000”、“#009E73”、“#0072B2”)[as.factor(SedCombined2$事件)], cex=0.7, 字体=2) 图例(“右下角”, border=“黑色”, bty=“n”, 图例=c(“2014年11月”、“2015年4月”、“2015年11月”、“2016年4月”), text.col=c(“#D55E00”、“#000000”、“#009E73”、“#0072B2”), cex=0.6, x、 intersp=0.5, y、 intersp=0.5, 插入=0)
x2这需要一些技巧,将图例指定给一个变量,然后使用该变量创建一个文本框:

temp <- legend("bottomright",
       border = "black",
       bty= "n",
       legend=c('','','',''),
       text.width=max(strwidth(c("November 2014", "April 2015","November 2015","April 2016"))),
       text.col = c("#D55E00", "#000000", "#009E73", "#0072B2"),     
       xjust=1, yjust=1)

text(
    temp$rect$left + temp$rect$w, 
    temp$text$y, 
    c("November 2014", "April 2015","November 2015","April 2016"), 
    pos=2, 
    c("#D55E00", "#000000", "#009E73", "#0072B2"))

temp欢迎来到SO!请阅读并使您的示例重现。参数为-2的插图将完全位于绘图区域之外。它应该是绘图区域的分数,因此大于1或小于-1的值不会将其保留在绘图区域中。是的,正如@42所说:在插图中使用分数值。我不能告诉您使用哪一个,因为您的代码在这里是不可复制的,但是可以从
inset=c(-0.1,0)
@jogo道歉!我将很快重写示例代码,使其符合“必要的最短代码”,并使其更具可复制性。
temp <- legend("bottomright",
       border = "black",
       bty= "n",
       legend=c('','','',''),
       text.width=max(strwidth(c("November 2014", "April 2015","November 2015","April 2016"))),
       text.col = c("#D55E00", "#000000", "#009E73", "#0072B2"),     
       xjust=1, yjust=1)

text(
    temp$rect$left + temp$rect$w, 
    temp$text$y, 
    c("November 2014", "April 2015","November 2015","April 2016"), 
    pos=2, 
    c("#D55E00", "#000000", "#009E73", "#0072B2"))