《R语言实战》自学笔记16-图形图例

Python020

《R语言实战》自学笔记16-图形图例,第1张

数据准备

函数:legend(location, title, legend, ....)

参数详解:

x和y:用于定位图例,也可用关键词"bottomright", "bottom", "bottomleft", "left", "topleft", "top", "topright", "right" 和 "center";当图例用关键词设置位置后,inset = 分数,可以设置其相对位置;

legend:指定图例标签,字符或表达式向量;

fill:用特定的颜色进行填充;

col:设置图例中出现的点或线的颜色;

border:当fill = 参数存在的情况下,用于指定填充的边框颜色;

lty, lwd:图例中线的类型与宽度;

pch:点的类型;

angle:阴影的角度;

density:阴影线的密度;

cex:指定图例显示大小;

bg:指定图例的背景色;

bty:指定图例框是否画出,默认o为画出,n为不画出;

box.lty, box.lwd, box.col: 设置图例边框线型,线粗,颜色,box.lty为虚线,box.lwd决定粗线,box.col决定颜色;

pt.bg:图例中点的背景色;

pt.cex:图例中点的大小;

pt.lwd:图例中点边缘的线宽;

x.intersp:图例中文字离图片的水平距离;

y.intersp:图例中文字离图片的垂直距离;

adj:图例中字体的相对位置;

text.width:图例中字体所占的宽度,调整后图例整个宽度也跟着变化了;

text.col:图例字体的颜色;

text.font:图例字体;

merge:逻辑值,merge=TRUE,合并点与线,但不填充图例框,默认为TRUE;

trace:逻辑值,trace=TRUE显示图例信息;

plot:逻辑值,plot=FALSE不画出图例;

ncol:图例中分类的列数;

horiz:逻辑值,horiz=TRUE,水平放置图例;

title:给图例加标题;

xpd:xpd=FALSE,即不允许在作图区域外作图,改为TRUE即可,与par()参数配合使用;

title.col:标题颜色;

title.adj:图例标题的相对位置,0.5为默认,在中间。0最左,1为最右;

seg.len:指定图例中线的线长,长度单位为字符宽度。

1 图例方位

2 修饰图例

3 图例绘制在图外

4 自定义图例

有时候绘制出的图是分组图,这时候需要自定义绘制图例。

参考资料:

《R语言实战》(中文版),人民邮电出版社,2013.

R语言绘制图例(legend)的各种问题_详细综合解析, https://blog.csdn.net/xiangyong58/article/details/54579293

投必得R语言教程,第二讲 R作图-基础-图形参数设置:标题、图例、文字, https://mp.weixin.qq.com/s?__biz=MzU1Mzc3OTIwNg==&mid=2247495531&idx=1&sn=cdd80d4e950ae2b344cf188c68922fa8&chksm=fbef0602cc988f14e93b71bc6fcc2fda782d3ae9a3a67601a6c87756f4ae85bcc5d9c56d9b51&scene=21#wechat_redirect

一幅图解决R语言绘制图例的各种问题, https://blog.csdn.net/weixin_30469895/article/details/96649305

https://www.rdocumentation.org/packages/customLayout/versions/0.2.0

https://mp.weixin.qq.com/s/zbp8pOQcNB4XBBF5SCg5GA

customLayout用于拼图特别方便,尤其是仪表盘布局

支持R内置的base绘图对象,ggplot2对象(与grid结合 )

Hide

”library(ggplot2)library(customLayout)

通过设置简单的数字矩阵以及对应的宽高比,可以非常方便的设置出来数字拼图

关键函数:

mat数字矩阵必须从1开始,且必须连续

其它拼图包没有的功能,非常好用

跟合并矩阵类似。分为行合并和列合并

这个功能也是其它包没有的,非常有用

关键函数:

参数lay表示大画布,参数newlay表示要嵌套进去的小画布,field表示指定要嵌套的区域编号

关键函数:

cowplot是一个ggplot2包的简单补充,意味着其可以为ggplot2提供出版物级的主题等。

更重要的是,这个包可以组合多个”ggplot2”绘制的图为一个图,并且为每个图加上例如A,B,C等标签,

这在具体的出版物上通常是要求的。 语法结构与ggplot类似,将ggplot2图作为一个对象置于 ggdraw() 中

表达式:

draw_plot(plot, x = 0, y = 0, width = 1, height = 1, scale = 1)

draw_text(text, x = 0.5, y = 0.5, size = 14, hjust = 0.5, vjust = 0.5,...)

draw_plot_label(label, x = 0, y = 1, hjust = -0.5, vjust = 1.5, size = 16, fontface = "bold", family = NULL, colour = NULL, ...)

参数解释:

grid中文翻译为网格,可将其解释为画布分割,通过设定相应的参数,从而可以任意的摆放图形

常用函数:

语法:

参数解释:

layout参数

综合例子

子母图,主要是形成局部放大的效果,既可以从整体上对比,又兼顾特别小的数据组,或特别密的数据点可以查看,而没有必要单独做2张图

<pre style="box-sizing: border-boxfont-family: Monaco, Menlo, Consolas, "Courier New", monospacefont-size: 13pxwhite-space: pre-wrapdisplay: blockpadding: 9.5pxmargin: 0px 0px 10pxline-height: 1.42857color: rgb(51, 51, 51)word-break: break-alloverflow-wrap: break-word !importantbackground-color: whiteborder: 1px solid rgb(204, 204, 204)border-radius: 4pxmax-width: 100%font-variant-numeric: normalfont-variant-east-asian: normalletter-spacing: 0.544pxtext-align: justifywidows: 1overflow: auto">## png

蝴蝶图

主要函数:

语法:

参数解释:

把绘图对象添加到列表总,并把该列表传递给 grid.arrange() 函数中的grobs参数

子母图

grid包可以画字母图

安装gridExtra包后,ggplot2中多了一个 ggplotGrob( )函数,可以创建grob对象参数

q1, 首先要确定是barplot还是hist,如果是barplot的话,应该不存在breaks的问题,因为barplot的传入参数是个矩阵;

我假设你要画的是个hist,我偶遇过这个问题,我的理解是hist的breaks的值要能被范围整除才行;比如x=1:200,break=7的话,就只能画出4个柱来,但如果breaks=10就没问题;基本上是这样的,偶尔也有例外;比如break=5就不行....奇怪得很

最后,没办法的办法,就只能用barplot代替hist了,barplot肯定不会有这个问题,统计下hist参数中的分布情况,转换成矩阵,用barplot吧;

q2, 貌似一般都用一组因素把这些类别区分开,我用abcde,表示你的小学,中学...了,比如这样:

a=1:7b=8:10c=c(9,10,11)d=c(40,55)e=100:110

f=factor(c(rep(1,sum(length(a),length(b),length(c))),rep(2,sum(length(d),length(e)))))#先用c()生成数组,在转换成factor,其实数组也ok的,不过plot()中两个数组和factor不一样 

x=c(a,b,c,d,e)

plot(x~f)

q3, 就我所知不行;yes或no一定也要是能映射到x,y范围内的点才行;你是想表示分类结果吗?如果是的话,通常用颜色,或者在点旁边的text表示。

q4, 举个例子吧

x=-50:50

y=x^2+x+1

z=10*abs(x)+1

 

plot(x,y,type='l')

lines(x,z,lty=3)

legend(c('type1','type2'), x=-20,y=2500, col=c('black','red'), lty=c(1,3))

legend的x和y是legend的左上角,匿名参数是类型名称,col,lty,pch 是对应的颜色,线类型,和点类型。

最后,我现在多用ggplot2,如果不抵触的话可以看看,和R的基础作图包思路不是很一样,但是图很清新的;

如果还有问题,建议把数据集data.frame粘贴几行上来,我也试试;