R语言绘制图例legend()

目录

一、legend()函数介绍

二、par()函数:将多幅图形组合成一幅总括图形

 示例:

三、 par()函数:图形尺寸与边界尺寸

四、legend()函数示例

 参考:


一、legend()函数介绍

当图形中包含的数据不止一组时,图例可以帮助你辨别出每个条形、扇形区域或者折线各代表哪一类数据。我们可以使用函数legend()来添加图例。其格式为:

legend(location, title, legend, ...)

  • location: 有很多方式可以指定图例的位置,具体来说
    • 可以直接给定图例左上角x,y坐标;
    • 可以执行locator(1),然后通过鼠标单击给出图例的位置;
    • 可以使用关键字bottom、bottomleft、left、topleft、top、topright、right、bottomright或center放置图例。(如果可以同时使用参数insert=指定图例向图形内测移动的大小,以绘图区域大熊的分数表示);
  • titile:图例标题的字符串(可选);
  • legend: 图例标签组成的字符型向量;
  • ... : 其他选项;
    • 如果图例标示的是颜色不同的线条,需要指定col=加上颜色值组成的向量;
    • 如果图例标示的是符号不同的点,则需要指定pch=加上符号的代码组成的向量;
    • 如果图例标示的是不同的线条宽度或线条类型,请使用lwd=或lty=加上宽度值或类型值组成的向量。
    • 要为图例创建颜色填充的盒型(常见于条形图、箱线图或饼图),需要使用参数fill=加上颜色值组成的向量。

其他常用的图例选项包括:

  • bty:用于指定盒子样式;
  • bg:指定背景色;
  • cex:指定大小的cex;
  • text.col:指定文本颜色
  • horiz=TRUE:将水平放置图例,而不是垂直放置。

 

 

二、par()函数:将多幅图形组合成一幅总括图形

在R中使用函数par()或layout()可以容易地组合多幅图形为一幅总括图形。
你可以在par()函数中

  • 使用图形参数mfrow=c(nrows, ncols)来创建按行填充的、行数为nrows、列数为ncols的图形矩阵;
  • 也可以使用mfcol=c(nrows,ncols)按列填充矩阵。 

 示例:

attach(mtcars)
opar <- par(no.readonly=TRUE)
par(mfrow=c(2,2))
plot(wt, mpg, main="Scatterplot of wt vs. mpg")
plot(wt, disp,main="Scatterplot of wt vs. disp")
hist(wt, main="Histogram of wt")
boxplot(wt, main="Boxplot of wt")
par(opar)
detach(mtcars)

 结果:

三、 par()函数:图形尺寸与边界尺寸

用于控制图形尺寸和边界大小的参数

  • pin:以英寸表示的图形尺寸(宽和高);
  • mai:以数值向量表示的边界大小,顺序为"下、左、上、右",单位为英寸;
  • mar:以数值向量表示的边界大小,顺序为"下、左、上、右",单位为英分;默认值为c(5, 4, 4, 2) + 0.1
  • 注意:一英分等于十二分之一英寸(0.21厘米)

四、legend()函数示例

b <- matrix(sample(1:16), 4, 4)
row.names(b) <- c("red", "green","cyan", "purple")
colnames(b) <- c("eg1", "eg2", "eg3", "eg4")
b

par(mai=c(2, 0.5, 0.5, 0.5))
barplot(b, beside=T, col=rainbow(4))
xy <- par("usr")

legend(x=xy[2]-xinch(0.2), y=xy[3]-yinch(0.8), legend=rownames(b),
       fill=rainbow(4), col=rainbow(4), xjust=1, yjust=0,
       xpd=T, ncol=4, bty="n")
legend(x=xy[2]-xinch(0.2), y=xy[3]-yinch(1), legend=rownames(b),
       fill=rainbow(4), col=rainbow(4), xjust=1, yjust=0,
       xpd=T, ncol=4, bty="n", adj=0.6)
legend(x=xy[2]-xinch(0.2), y=xy[3]-yinch(1.2), legend=rownames(b),
       fill=rainbow(4), col=rainbow(4), xjust=1, yjust=0,
       xpd=T, ncol=4, bty="n", x.intersp=0.6)
legend(x=xy[2]-xinch(0.2), y=xy[3]-yinch(1.2), legend=rownames(b),
       fill=rainbow(4), col=rainbow(4), xjust=1, yjust=0,
       xpd=T, ncol=4, bty="n", text.width=1.6)
legend(x=xy[2]-xinch(0.2), y=xy[3]-yinch(1.2), legend=rownames(b),
       fill=rainbow(4), col=rainbow(4), xjust=1, yjust=0,
       xpd=T, ncol=4, bty="n", text.width=1.6, x.intersp=0.6)


legend(x=xy[2]-xinch(0.2), y=xy[3]-yinch(1.2), legend=rownames(b),
       fill=rainbow(4), col=rainbow(4), xjust=0, yjust=1,
       xpd=T, ncol=2, bty="n", text.width=2, x.intersp=0.6,
       y.intersp=0.8)

效果:

 其中序号1-9在代码中位置为:

命令1

设置绘图参数mai=c(下,左,上,右)的边界空间。

命令2

绘制柱状图。

命令3
选取绘图区域左下角和右上角的坐标。

命令4
正常绘图,设置xpd=T。xinch()、yinch(),分别表示沿x轴,y轴移动的距离,按绝对距离计算,或按坐标轴的数量级计算。fill=T,即显示图标(默认为矩形填充色)。fill=F的话可以设置pch,选择图标类型。

命令5
设置adj=0.6,adj越接近于0,图标与文字的相对距离越远。

此参数作用于文字,图标不动。

命令6
设置x.intersp=0.6,越接近于0,图标与文字的绝对距离越近。以一侧为标准,图标文字均移动。

命令7
设置text.width=1.4,表示图标和文字整体的宽度。当文字太长时可以调节此参数。

命令8
text.width与x.intersp结合使用,效果最好。

命令9
设置ncol=2,分为两列。

命令10

修改了x.intersp的数值,图例中所有的 "图标"和 文字相对水平距离同时扩大,y.intersp 对应垂直距离。而 adj=c(0,0.5) 是 控制单个图标和其对应的文字之间的距离。 adj默认值为c(0,0.5),当adj向量中第二个数值变化时,图例中的文字也开始上下移动,而当adj的第一个参数变化时,图例中文字和图片间的水平距离发生变化。
 

 参考:

R语言绘制图例(legend)的各种问题_详细综合解析_r语言 legend_xiangyong58的博客-CSDN博客

《R语言实战(第2版)》(2016年5月出版,人民邮电出版社) 

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值