R语言作图:图例设置

今天总结一下R语言底层作图的图例设置,主要是legend函数的用法。

legend(x, y = NULL, legend, fill = NULL, col = par("col"),

       border = "black", lty, lwd, pch,

       angle = 45, density = NULL, bty = "o", bg = par("bg"),

       box.lwd = par("lwd"), box.lty = par("lty"), box.col = par("fg"),

       pt.bg = NA, cex = 1, pt.cex = cex, pt.lwd = lwd,

       xjust = 0, yjust = 1, x.intersp = 1, y.intersp = 1,

       adj = c(0, 0.5), text.width = NULL, text.col = par("col"),

       text.font = NULL, merge = do.lines && has.pch, trace = FALSE,

       plot = TRUE, ncol = 1, horiz = FALSE, title = NULL,

       inset = 0, xpd, title.col = text.col, title.adj = 0.5,

       seg.len = 2)

参数比较多,不过可以大体上分为以下几种功能:

(1)位置坐标参数:

x和y代表图例位置的横纵坐标,除了输入精确的xy坐标,只在x参数中输入"left"、"right"、"top"、"bottom"、"topleft"、" topright"、"bottomleft"、" bottomright"八个单词,可以实现图例在图形左、右、上、下、左上、右上、左下、右下的快速布局。

(2)文本参数:

legend表示每一条图例的文字说明;text.font表示字体,即粗体、斜体;title表示图例整体的标题,text.width是文本的宽度。

(3)颜色参数:

col是点或线的颜色,fill是方块的填充颜色,text.col是图例文字的颜色,title.col是标题的颜色,bg是图例的背景色,pt.bg是点的填充色。

(4)形状参数

lty表示线的类型,pch表示点的类型,angle表示阴影线角度,density表示阴影线密度。

(5)大小参数

cex是整体的大小,pt.cex是点的大小,pt.lwd是点的轮廓线粗细,lwd表示线的粗细,seg.len表示线的长短。

(6)边框参数

bty是边框的类型,只提供2种类型,"o"是有边框,"n"是无边框;x.intersp是边框的宽度, y.intersp是边框的高度。

(7)位置微调参数

xjust和yjust是图例实际位置相对输入的xy坐标点的位置。X和y是图例中心的位置,当xjust = 0.5时,表明图例中心恰好在x点,如果xjust = 0,则表示图例中心位于x点偏左0.5处,如果xjust = 1,则表示图例中心位于x点偏右0.5处;yjust是对垂直位置的微调,用法相同;adj是对文本水平位置的微调,用法相同。

(8)其他

merge如果为True,表示当有点和线同时出现是,点和线在图形上合并展示,即点画在线上。

ncol是图例的列数,可以理解成每行写几个,默认为1。

horiz控制图例横排还是竖排,不是文字横着写还是竖着写,而是当图例有多个时是排成一行还是排成一列。

举几个例子

x <- seq(-2, 2, 0.1)
y1 <- x^2
y2 <- x^3
par(mfrow = c(2, 2), mar = c(4, 4, 1, 1))
## 图例放在上边,有边框
plot(x, y1, type = 'l', col= 'coral', ann = F) 
legend(x = 'top', 
       legend = expression(y == x^2),
       lty = 1,
       col = 'coral')
## 图例放在左边,有边框
plot(x, y1, type = 'l', col= 'coral', ann = F)   
legend(x = 'left', 
       legend = expression(y == x^2),
       lty = 1,
       col = 'coral')
## 图例放在左上,无边框
plot(1, 1, xlim = c(-2, 2), ylim = c(-8, 8), type = 'n', ann = F, las = 1)   
lines(x, y1, lty = 1, col = 'coral')
lines(x, y2, lty = 1, col = 'skyblue')  
legend(x = 'topleft', 
       legend = c(expression(y == x^2), expression(y == x^3)),
       lty = 1,
       col = c('coral', 'skyblue'),
       bty = 'n')
## 图例放在右上,无边框
plot(1, 1, xlim = c(-2, 2), ylim = c(-8, 8), type = 'n', ann = F, las = 1)   
lines(x, y1, lty = 1, col = 'coral')
lines(x, y2, lty = 1, col = 'skyblue')  
legend(x = 'topright', 
       legend = c(expression(y == x^2), expression(y == x^3)),
       lty = 1,
       col = c('coral', 'skyblue'),
       bty = 'n',
       horiz = T)

可以看到有边框时,图例的整个区域覆盖住了底层图形,无边框时没有覆盖底层图形,只是图例的文字印在了底层图形上。

  • 27
    点赞
  • 222
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值