时间:2021-05-20
点图又叫Cleveland dot plot,克利夫兰点图。可以在水平线上绘制大量的点,更好的表示点之间的关系。强调数据的排序展示以及数据之间的差距。
点图一般是横向展示,所以y轴为类别型变量,x轴为需要展示的数据值。
R语言的base包里面自带的dotchart函数可以绘制点图。
上面简介中的例子copy自dotchart的函数帮助文档。
dotchart(VADeaths, main = "Death Rates in Virginia - 1940")数据是1940年每1000人的死亡率。数据按照年龄段来区分,并且按照地方,男女性分组。
> VADeaths Rural Male Rural Female Urban Male Urban Female50-54 11.7 8.7 15.4 8.455-59 18.1 11.7 24.3 13.660-64 26.9 20.3 37.0 19.365-69 41.0 30.9 54.6 35.170-74 66.0 54.3 71.1 50.0我想比较特定地方的男女死亡率的比较。这样的话,数据需要处理。下面的code处理的比较麻烦。但是达到了我要的效果。
ruralDFMale <- data.frame(rownames(VADeaths),VADeaths[,1], c("Male","Male","Male","Male","Male"))names(ruralDFMale ) <- c("AgeGroup", "DeathRate","Gender" )ruralDFFeMale <- data.frame(rownames(VADeaths),VADeaths[,2], c("Female","Female","Female","Female","Female"))names(ruralDFFeMale) <- c("AgeGroup", "DeathRate","Gender" )ruralDF <- rbind(ruralDFMale, ruralDFFeMale)colorFun <- function(gender) { colorVec <- vector() for(g in gender) { if(g == "Female") { colorVec <- c(colorVec, "Red") } else { colorVec <- c(colorVec, "Blue") } } colorVec }dotchart(ruralDF$DeathRate, main = "Death Rates in Virginia - 1940", groups=ruralDF$AgeGroup,color=colorFun(ruralDF$Gender))处理过后的数据
> ruralDF AgeGroup DeathRate Gender50-54 50-54 11.7 Male55-59 55-59 18.1 Male60-64 60-64 26.9 Male65-69 65-69 41.0 Male70-74 70-74 66.0 Male50-541 50-54 8.7 Female55-591 55-59 11.7 Female60-641 60-64 20.3 Female65-691 65-69 30.9 Female70-741 70-74 54.3 Female图中的红色为女性,蓝色为男性。结果符合一般的常识,女性的寿命高于男性。所以同一年龄段的女性死亡率比男性低。
补充:R语言作图——violin plot(小提琴图)
小仙同学决定学习R语言来提升自己作图的“逼格”的时候,心中还有有些疑虑的(嘿嘿,我这么懒,可不愿意做无用功了?)。仔细想了想,貌似又找到了两个学习R的理由。
一是R可以帮助我们避免重复劳动,实现“一劳永逸”的终极梦想。尽管非常不想承认这一事实,在科研的过程中,小仙同学制造出了大量“无效”的数据(sign…),但也不得不“绞尽脑汁”、“竭尽全力”地进行花式分析,试图找出合理的解释。这时候用Excel或者Origin作图的劣势就显现出来了,每换一种分析方法或者是数据,我们都需要经过“插入图表”、“调整颜色”、“调整间距”等等繁杂的工序画出一张可以拿去“面圣”的图。小仙同学一想到这些就感觉“累觉不爱”了。
二是R可以自动生成比较貌美的图。不知道大家有没有这样的感受,自己辛辛苦苦画了半天、调整的半天的图会得到真实却很残忍的评价“很丑”(这是小仙同学心中永远的痛)。即使本小仙自以为眼光独特、品味高雅,费劲尝试“高级”的色系,但搭配出来总是那么不尽人意(实测网红晚晚带火的“莫兰迪色”不适用于科研绘图)。颜色的搭配、饱和度和透明度的调整没有想象中那么容易。折腾了半天,天生就爱不服气的本小仙,最后决定还是把专业的事交给专业的人做啦(偷偷告诉你,据说有科学家专门研究paper插图的配色,所以自己画的图没有那么貌美的时候也不要“妄自菲薄”啦)。
好了,叨叨这么多,终于要开始进入正题啦。一开始用R绘图的时候,小仙同学其实是非常痛苦的,因为没有编程基础,又怼了好几年瓶瓶罐罐,看到一行行代码,脑子里飘过的全是“&%¥#@¥$”。尤其是当你有实验要做、报告要写、作业要交的时候,平心静气地坐下来踏踏实实学习真的太难了(有人说小仙同学那么忙是因为效率低,好像真有些道理,我这真是“唉”,有苦说不出)。
后来本小仙的学习策略就非常简单,用到啥就去搜啥,我对数据结构、语法结构一点都不感兴趣,能让我用最短的时间内画出我想要的图,就是最好的方法。即使这样,小仙同学还是费了一些功夫。因为网上的一些教程,很多都是从别处复制粘贴过来的,本身就不完整。另外一个原因,某些大神觉得自己的教程已经足够通俗易懂了,有些大家都知道的基础知识根本不需要讲(小仙同学不服,有基础的同学不用看教程也可以自己摸索出来,真正需要教程的就是我们这些小白)。
小仙同学愿意尝试一下,把最最全面、稍作修改就能拿去的方法code分享一下,也不枉费花了那么多的时间。
那就先从violin plot开始吧。
(假设你已经安装了R和RStudio)
首先要把你想要绘图的数据调整成R语言可以识别的格式。
一般我们的数据都是保存在excel文档里,这里建议大家在excel中保存成csv格式,读写的速度会比xlsx快很多。(小仙同学的亲身经验,我的有些数据有两万行,xlsx在我的耐心范围内读不进去,RStudio崩溃)。
数据的格式如下图:一列表示一种变量,第一行是列名
的第一行是列名,如果没有列名就用header=F
*如果你想手动改变颜色,可以使用这一句
p+geom_violin(aes(fill = “dose”))+scale_fill_manual(values=c("#56B4E9"))#注释:”#56B4E9”可以用其他颜色的代码来替换以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
最近用R语言画图,plot函数是用的最多的函数,而他的参数非常繁多,由此总结一下,以供后续方便查阅。plot(x,y=NULL,type="p",xlim=NU
R语言提供来大量的库来实现绘图功能。饼图,或称饼状图,是一个划分为几个扇形的圆形统计图表,用于描述量、频率或百分比之间的相对关系。R语言使用pie()函数来实现
折线图是通过在它们之间绘制线段来连接一系列点的图。这些点在它们的坐标(通常是x坐标)值之一中排序。折线图通常用于识别数据中的趋势。R语言中的plot()函数用于
plot()函数在R语言画图中位置十分重要,现在就对其具体用法做一个总结。基本用法:plot(x=x轴数据,y=y轴数据,main="标题",sub="子标题"
今天在循环导出图片时,遇到了一个问题:使用R语言导出图片的代码:setwd("E://R")jpeg(file="A.jpeg")print(plot(PEO$