R如何使图例位置独立于图形大小

R如何使图例位置独立于图形大小,r,resize,alignment,legend,R,Resize,Alignment,Legend,这是我的密码;基本上,我把四个图形放在同一个绘图设备上,每个图形上都放一个图例。[编辑:我正在与RStudio合作] dev.new() par(mfrow=c(2,2), oma=c(0,0,2,0)) #plot1 plot(parameters...) par(new=TRUE) plot(parameters, col="red") legend("bottomright", c("seed match", "background"), bty="n", lty=c(1,1),

这是我的密码;基本上,我把四个图形放在同一个绘图设备上,每个图形上都放一个图例。[编辑:我正在与RStudio合作]

dev.new()
par(mfrow=c(2,2), oma=c(0,0,2,0))

#plot1
plot(parameters...)
par(new=TRUE)
plot(parameters, col="red")
legend("bottomright", c("seed match", "background"), bty="n", lty=c(1,1),
    col=c("red","black"), cex=0.8, inset=0)

#plot2
plot(parameters...)
par(new=TRUE)
plot(parameters..., col="red")
legend("bottomright", c("seed match", "background"), bty="n", lty=c(1,1),
    col=c("red","black"), cex=0.8,inset=0)

#etc. same for plot2 and plot 3

title("bla bla bla", outer=TRUE)
我有两个问题。 (1) 尽管我指定了“bottomright”,但图例似乎没有与右下角对齐,我水平调整图形的大小越宽,图例和图形右侧之间的空间就越大

(2) 图例占用的空间不足。我尝试过修改cex=但这只考虑字体大小,图例占用的总空间仍然存在,这意味着字体越小,行间距越大。我希望这个传说少一点“散播”

插图 这看起来还行,不过我想减少图例中各行之间的间距:

但当我水平调整大小时,它不会。我想把图例系在图表的右边。

您可以对每个图例元素使用两次
legend()
,而不是使用
“bottomright”
,每个图例元素的位置值如下

图例(x1,y1,c(“种子匹配”),bty=“n”,lty=1,col=“red”,cex=0.8)

第一个。这样,您可以单独选择它们的位置,从而控制它们之间的间距。我认为这解决了你的两个问题。

(1): 由于图形的缩放方式相同,因此可以使用x和y坐标来定位图例,而不是关键字。e、 g:

legend(x = 0.25, y = 35, c("seed match", "background"), bty="n", lty=c(1,1), col=c("red","black"), cex=0.8, inset=0)
(2) : 我不知道是否存在通过legend()操纵行距的方法,我没有找到。我总是通过mtext()、abline()等手动生成图例,当图例必须看起来非常漂亮时。这是更多的工作,但你控制了你传奇的每一个方面

最后一条评论:我想你希望你的图表不是在屏幕上,而是在某种纸张或演示文稿上。我总是使用cairo_ps()、svg()或jpeg()等设备生成图形(只有在极少数情况下才使用jpeg,因为它是光栅的,而不是基于矢量的)。与导出R图形设备相比,这些函数使您能够更好地控制图形。但是图形的外观随着设备的变化而变化,每个图形都需要单独配置。最好只为你最后要用的那一个去做


我希望这会有所帮助

在调整输出设备的大小后,您是否再次尝试打印图形?天啊,所以我需要输出设备的大小与导出图形时所需的大小相同?这使得在11英寸Mac Air上工作非常困难…不,使用诸如
png
pdf
之类的功能(设备),它们允许您指定大小。您的意思是从这里开始吗?不,请查看
帮助(“pdf”)
帮助(“png”)
。这些函数是base R的一部分。如果您需要光栅图形,请不要使用
jpeg
,使用
png
。我在接受答案之前发布了一个解决方案,该解决方案成功地解决了位置和间距问题……悲哀