正如标题所说:How can I plot a legend outside the plotting area when using base graphics?

我曾想过摆弄layout,生成一个只包含图例的空绘图,但我对一种只使用基本图形工具的方法感兴趣,例如par(mar = ),在绘图右侧为图例留出一些空间.


这里有一个例子:

plot(1:3, rnorm(3), pch = 1, lty = 1, type = "o", ylim=c(-2,2))
lines(1:3, rnorm(3), pch = 2, lty = 2, type="o")
legend(1,-1,c("group A", "group B"), pch = c(1,2), lty = c(1,2))

生产:

alt text

但如前所述,我希望图例位于绘图区域之外(例如,图形/绘图的右侧).

推荐答案

也许你需要的是par(xpd=TRUE),以便在绘图区域之外绘制东西.因此,如果你用bty='L'做主要情节,你会在右边有一些空间来制作一个传奇.通常情况下,这会被剪裁到绘图区域,但如果执行par(xpd=TRUE),经过一点调整,您可以得到一个尽可能右的图例:

 set.seed(1) # just to get the same random numbers
 par(xpd=FALSE) # this is usually the default

 plot(1:3, rnorm(3), pch = 1, lty = 1, type = "o", ylim=c(-2,2), bty='L')
 # this legend gets clipped:
 legend(2.8,0,c("group A", "group B"), pch = c(1,2), lty = c(1,2))

 # so turn off clipping:
 par(xpd=TRUE)
 legend(2.8,-1,c("group A", "group B"), pch = c(1,2), lty = c(1,2))

R相关问答推荐

R创建一个数据透视表,计算多个组的百分比

计算R中的威布尔分布的EDF

警告:lmdif:info = 0. nls. lm()函数的输入参数不正确

在使用ggroove后,将图例合并在gplot中

在组中添加值增加和减少的行

为什么舍入POSIXct会更改能力以匹配等效的POSIXct?

如何在一次运行中使用count进行多列计数

无法正确设置动态创建的Quarto标注的格式

plotly hover文本/工具提示在shiny 中不起作用

R Read.table函数无法对制表符分隔的数据正常工作

R Select()可以测试不存在的子集列

绘制采样开始和采样结束之间的事件

无法定义沿边轨迹的 colored颜色 渐变(与值无关)

哪一行和行和 Select 特定行,但是考虑到Nas

Ggplot2中geom_tile的动态zoom

随机森林的带Shap值的蜂群图

如何使这些react 表对象相互独立?

如何阻止围堵地理密度图?

注释不会绘制在所有ggplot2面上

使用ggplot2绘制具有边缘分布的坡度图