楼主: codewar
1226 0

[学习分享] R可视化:plot函数基础操作,小白教程 [推广有奖]

  • 0关注
  • 13粉丝

本科生

80%

还不是VIP/贵宾

-

威望
0
论坛币
1392 个
通用积分
1114.7594
学术水平
73 点
热心指数
71 点
信用等级
58 点
经验
3214 点
帖子
52
精华
0
在线时间
32 小时
注册时间
2021-7-10
最后登录
2024-4-11

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

最近迷恋上了画图,一方面是觉得挺有意思的,另一方面是觉得自己确实画图方面比较弱,所以决定比较系统地回顾反思一下,同时顺带记录下来分享给大家。也确实是好久好久没更新文章了,真的是杂事太多太忙太牵扯精力没法更新,好多粉丝的消息也都回不了。

还有一个原因就是画图这个东西,可以学一点记一点,然后写一点,碎片化时间可以完全利用起来,写统计方法的话,是需要大量整块的时间去思考的,思路断了下次相连起来就特别困难,所以如果不是特别闲,有大量整块的时间,感觉我自己也很难写的出来了。因为太多是精力被牵扯,稍有闲暇时间就只想躺平在床上,哪有心力写什么公众号哦,如今这个氛围世道下,作为一名青年教师,真的很难有整块时间进行深度工作。

所以今天就只能给大家写一些比较肤浅的,最最最基础的作图函数plot,希望大家不要嫌弃哈。

plot函数常用参数介绍

首先plot函数可以接受一系列的参数,通过参数的组合修改基本上可以画出你想要的任何图形,plot可以接受的常见的参数如下:



常见的图形参数的意思,直接拉一张表给大家:



表中都是一些很简单的描述,我相信大家一看就懂,这儿要给大家提的是type,tpye参数可以控制图的类型,常见的图的类型一览如下:



比如你要画一个点图,就可以写type='p',要画一个线图就可以写type='l'等等,其余的type对应的图的样子如下图:



就是你只要设定好了x和y的数据,你想画个啥图,就将type设置为对应的啥就可以。

还要给大家介绍颜色参数col的表示,col的表示有很多种方法,比如你想要你图呈红色,只需要将col参数设置为col="red"就行,那么当然不止可以设置为红,R有很多预先设定好的颜色可以供你选择,你在console中运行colors()就可以看到预设的颜色了,如下:



总共其实有657个颜色,这儿我就只截图了这么多而已哈。657个颜色如下,可以随便选:



其实颜色的设定还有很多别的方式,比如可以用颜色的index,颜色names,也可以用RGB,也可以用十六进制表示都行:



颜色介绍完了我们再看las参数,轴标签的style可以用las参数修改,什么意思呢,就是我们的轴标签可以选择是和轴水平,还是一直水平,或者一直垂直。什么意思呢?大家看这幅图:



可以看到轴标签都是和轴平行的(y轴的标签和y轴平行),这个时候我们将y轴的标签改为水平才更符合我们的读图习惯,这个时候我们就可以将las设置为1,得到如下的图:



此时大家再注意纵轴的标签,可以看到也变为平行分布了,这个就是las参数的作用。

继续看bty参数,这个参数是用来改画图的框框的,就是说默认我们用plot作图都会带一个框框,如下:



比如我想要一个无框图我就可以将bty设置为n,然后就得到效果如下,没有框框只有轴:



plot函数中还有个pch参数是控制点的类型的,取值意义如下,大家也可以换着用用试试:



比如我想要我的点是空心菱形,我就可以设置pch=5,就可以得到下面的图:



上图的完整代码如下:

plot(pressure,pch=21,col='#eb280a', bg="lightblue",las=1,     cex=1,type='p',bty='n'     )plot作图时的图例操作

我们在一个图中画多组对象的时候,这个时候就需要图例来帮助我们读图,比如对下面的图,这个图中有两组数据,但却没有图例,我们不知道三角形和圈圈代表啥:



我想加一个图例,这个时候就需要继续运行legend函数,比如我想圈圈代表‘关注’,三角代表‘Codewar’,我就可以写出如下代码,这儿的“关注”和“Codewar”你都可以换成你想的任何字符哈,这儿仅用它举例:

legend(0,800,       c("关注","Codewar"), pch=c(19,17), col=c("lightblue","blue"))

图例当然也可以改,首先就是改位置,位置的关键字有9个,对应的位置如下图:



图例的位置可以用关键字改,也可以更加的个性化,用坐标改也是可以的,其可以接受的参数如下图:



比如我想将原来的图例换成红色的背景,然后放在(25,800)这个坐标上,我就可以写出如下代码:

legend(25,800,       bg = 'red',       c("关注","Codewar"), pch=c(19,17), col=c("lightblue","blue"))

运行后得到下图:



大家可以看到一个红色背景的图例已经在对应位置加上了,但是仔细观察上图,其实我们现在图是没有边框的,这个时候图例加个边框也不合适,所以我还想设置下图例的边框,甚至我还想改图例中的字体,甚至图例整体的大小,甚至是....统统都是可以的哈,就是这么牛!

比如,我现在突发奇想,我想给我的图例加一个标题,再将其变小一点,放在右下角,并且让图例中的字水平排列,我就可以写出如下代码:

legend("bottomright", title="欢迎大家",       c("关注","Codewar"),col=c("lightblue","blue"), horiz=TRUE, cex=0.4,       box.lty=0,       bg = 'red',       text.font=4       )

依然是给大家解释下上面代码中各个参数的意思:bottomright是图例位置的关键字,title是标题字符,horiz是图例内容水平排列,cex是图例整体大小,box.lty是图例边框(取0就是无框),text.font是字体(取4就是斜体)。大家可以尝试着改改上面的参数自己试试呀。

实例操练

比如我给一位同学做了个轨迹模型,这个模型本身是用plot函数输出的,默认输出的图像如下:



我此时想将这个图参照已经发表的一篇文献,改一改,大概改成下面这个样子:



我们先观察一下需要改动的地方,首先就是图的边框,之前给大家写了边框可以用bty参数改;然后是横轴的标签,这个可以用axis改,并且需要将标签改为始终水平放置(使用las参数);然后就是图例了,图例需要放在整幅图的下面,可以用legend函数改。

我们就来实操一下:运行下面代码

plot(plotpred, lty=1, lwd=5, shades=T,     xlab="Time",     ylab="PTG",      bty='l',     las=1,     cex=0.75,legend = NULL)axis(side=1, at=c(0,0.5,1,1.5,2), labels = c('2001','2002','2003','2004','2005'))legend("bottom",       legend = c('Low','Moderate','High'),       col = c(2,1,3),         lty=1, lwd=5,       horiz = T,       seg.len=6,       bty='n',       xpd = T,inset=-0.25)

运行上面的代码即可得到下图,效果基本上和发表的文献已经一致了,放在论文中肯定也是没问题的:



上面的代码中axis是对图形坐标轴进行重新设置,side参数的可以取4个值,side=1的意思是below,就是下面这个轴,对下面这个轴进行操作,at参数可以设置轴标签的位置,此时写了5个位置,相应地labels就是轴标签,即在at的5个位置上标签分别为2001-2005年。还有legend函数中,需要提示一下的就是xpd参数,这个参数为TRUE就表示允许在原图外进行绘制,此时就表示我在原图外,也就是原图的下方添加图例。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:基础操作 plot 可视化 Moderate Pressure

已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
jiangbeilu + 50 + 3 精彩帖子
Sunknownay + 3 + 3 + 3 鼓励积极发帖讨论
llb_321 + 24 + 60 + 3 精彩帖子

总评分: 经验 + 24  论坛币 + 110  学术水平 + 6  热心指数 + 6  信用等级 + 3   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-29 02:10