目录
一、legend()函数介绍
二、par()函数:将多幅图形组合成一幅总括图形
示例:
三、 par()函数:图形尺寸与边界尺寸
四、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=加上颜色值组成的向量。
其他常用的图例选项包括:
在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)
结果:
用于控制图形尺寸和边界大小的参数
- pin:以英寸表示的图形尺寸(宽和高);
- mai:以数值向量表示的边界大小,顺序为"下、左、上、右",单位为英寸;
- mar:以数值向量表示的边界大小,顺序为"下、左、上、右",单位为英分;默认值为c(5, 4, 4, 2) + 0.1
- 注意:一英分等于十二分之一英寸(0.21厘米)
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月出版,人民邮电出版社)