R语言绘图-点图dot plot

点图简介

点图又叫Cleveland dot plot,克利夫兰点图。可以在水平线上绘制大量的点,更好的表示点之间的关系。强调数据的排序展示以及数据之间的差距。

点图一般是横向展示,所以y轴为类别型变量,x轴为需要展示的数据值。

dotchart函数

dotchart(x, labels = NULL, groups = NULL, gdata = NULL,
         ann = par("ann"), xaxt = par("xaxt"), frame.plot = TRUE, log = "",
         cex = par("cex"), pt.cex = cex,
         pch = 21, gpch = 21, bg = par("bg"),
         color = par("fg"), gcolor = par("fg"), lcolor = "gray",
         xlim = range(x[is.finite(x)]),
         main = NULL, xlab = NULL, ylab = NULL, ...)

R语言的base包里面自带的dotchart函数可以绘制点图。

上面简介中的例子copy自dotchart的函数帮助文档。

dotchart(VADeaths, main = "Death Rates in Virginia - 1940")

数据是1940年每1000人的死亡率。数据按照年龄段来区分,并且按照地方,男女性分组。

> VADeaths
      Rural Male Rural Female Urban Male Urban Female
50-54       11.7          8.7       15.4          8.4
55-59       18.1         11.7       24.3         13.6
60-64       26.9         20.3       37.0         19.3
65-69       41.0         30.9       54.6         35.1
70-74       66.0         54.3       71.1         50.0

dot 比较图

我想比较特定地方的男女死亡率的比较。这样的话,数据需要处理。下面的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 Gender
50-54     50-54      11.7   Male
55-59     55-59      18.1   Male
60-64     60-64      26.9   Male
65-69     65-69      41.0   Male
70-74     70-74      66.0   Male
50-541    50-54       8.7 Female
55-591    55-59      11.7 Female
60-641    60-64      20.3 Female
65-691    65-69      30.9 Female
70-741    70-74      54.3 Female

图中的红色为女性,蓝色为男性。结果符合一般的常识,女性的寿命高于男性。所以同一年龄段的女性死亡率比男性低。

补充:R语言作图——violin plot(小提琴图)

小仙同学决定学习R语言来提升自己作图的“逼格”的时候,心中还有有些疑虑的(嘿嘿,我这么懒,可不愿意做无用功了?)。仔细想了想,貌似又找到了两个学习R的理由。

一是R可以帮助我们避免重复劳动,实现“一劳永逸”的终极梦想。尽管非常不想承认这一事实,在科研的过程中,小仙同学制造出了大量“无效”的数据(sign…),但也不得不“绞尽脑汁”、“竭尽全力”地进行花式分析,试图找出合理的解释。这时候用Excel或者Origin作图的劣势就显现出来了,每换一种分析方法或者是数据,我们都需要经过“插入图表”、“调整颜色”、“调整间距”等等繁杂的工序画出一张可以拿去“面圣”的图。小仙同学一想到这些就感觉“累觉不爱”了。

二是R可以自动生成比较貌美的图。不知道大家有没有这样的感受,自己辛辛苦苦画了半天、调整的半天的图会得到真实却很残忍的评价“很丑”(这是小仙同学心中永远的痛)。即使本小仙自以为眼光独特、品味高雅,费劲尝试“高级”的色系,但搭配出来总是那么不尽人意(实测网红晚晚带火的“莫兰迪色”不适用于科研绘图)。颜色的搭配、饱和度和透明度的调整没有想象中那么容易。折腾了半天,天生就爱不服气的本小仙,最后决定还是把专业的事交给专业的人做啦(偷偷告诉你,据说有科学家专门研究paper插图的配色,所以自己画的图没有那么貌美的时候也不要“妄自菲薄”啦)。

好了,叨叨这么多,终于要开始进入正题啦。一开始用R绘图的时候,小仙同学其实是非常痛苦的,因为没有编程基础,又怼了好几年瓶瓶罐罐,看到一行行代码,脑子里飘过的全是“&%¥#@¥$”。尤其是当你有实验要做、报告要写、作业要交的时候,平心静气地坐下来踏踏实实学习真的太难了(有人说小仙同学那么忙是因为效率低,好像真有些道理,我这真是“唉”,有苦说不出)。

后来本小仙的学习策略就非常简单,用到啥就去搜啥,我对数据结构、语法结构一点都不感兴趣,能让我用最短的时间内画出我想要的图,就是最好的方法。即使这样,小仙同学还是费了一些功夫。因为网上的一些教程,很多都是从别处复制粘贴过来的,本身就不完整。另外一个原因,某些大神觉得自己的教程已经足够通俗易懂了,有些大家都知道的基础知识根本不需要讲(小仙同学不服,有基础的同学不用看教程也可以自己摸索出来,真正需要教程的就是我们这些小白)。

小仙同学愿意尝试一下,把最最全面、稍作修改就能拿去的方法code分享一下,也不枉费花了那么多的时间。

那就先从violin plot开始吧。

(假设你已经安装了R和RStudio)

Step1. 绘图数据的准备

首先要把你想要绘图的数据调整成R语言可以识别的格式。

一般我们的数据都是保存在excel文档里,这里建议大家在excel中保存成csv格式,读写的速度会比xlsx快很多。(小仙同学的亲身经验,我的有些数据有两万行,xlsx在我的耐心范围内读不进去,RStudio崩溃)。

数据的格式如下图:一列表示一种变量,第一行是列名

Step2. 绘图数据的读取

data<-read.csv(“your file path”, header = T) #注释:header=T表示数据中

的第一行是列名,如果没有列名就用header=F

Step3.绘图所需package的安装、调用

install.package(“ggplot2”) #注释:ggplot2是目前公认绘图很强的一个安装包
library(ggplot2) #注释:package在使用之前需要调用

Step4.绘图

data$dose <- as.factor(data$dose) #注释:此处dose可用你的变量名称替换,$表示取数据集里的某一个元素

p<-ggplot(data, aes(x = dose, y = len)) #注释:”x=”,”y=”表示x轴和y轴表示的变量数值,p表示图像对象
p+geom_violin() #注释:画出violin plot的函数

Step5.美化

p+geom_violin(aes(fill = dose)) #注释:按组别填充不同的颜色

*如果你想手动改变颜色,可以使用这一句

p+geom_violin(aes(fill = “dose”))+scale_fill_manual(values=c("#56B4E9"))
#注释:”#56B4E9”可以用其他颜色的代码来替换

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • R语言绘制散点图实例分析

    散点图显示在笛卡尔平面中绘制的许多点. 每个点表示两个变量的值. 在水平轴上选择一个变量,在垂直轴上选择另一个变量. 使用plot()函数创建简单散点图. 语法 在R语言中创建散点图的基本语法是 - plot(x, y, main, xlab, ylab, xlim, ylim, axes) 以下是所使用的参数的描述 - x是其值为水平坐标的数据集. y是其值是垂直坐标的数据集. main要是图形的图块. xlab是水平轴上的标签. ylab是垂直轴上的标签. xlim是用于绘图的x的值的极限.

  • 如何用R语言绘制散点图

    散点图是将所有的数据以点的形式展现在直角坐标系上,以显示变量之间的相互影响程度,点的位置由变量的数值决定,每个点对应一个 X 和 Y 轴点坐标. 散点图可以使用 plot() 函数来绘制,语法格式如下: plot(x, y, type="p", main, xlab, ylab, xlim, ylim, axes) x 横坐标 x 轴的数据集合 y 纵坐标 y 轴的数据集合 type:绘图的类型,p 为点.l 为直线, o 同时绘制点和线,且线穿过点. main 图表标题. xlab.

  • R语言 使用ggplot2绘制好看的分组散点图

    我们以iris数据集为例,该数据集包括花萼的长度和宽度,花瓣的长度和宽度,以及物种,如下图: 本文我们要绘制不同物种下花萼的长度和宽度的分布情况,以及二者之间的相关性关系. 1. 首先载入ggplot2包, library(ggplot2) 2. 然后进行ggplot(data = NULL, mapping = aes(), ..., environment = parent.frame())绘制,在绘制中第一个参数是数据,第二个参数是数据映射,是绘制的全局变量,其中包含的参数有x,y,col

  • R语言绘图-点图dot plot

    点图简介 点图又叫Cleveland dot plot,克利夫兰点图.可以在水平线上绘制大量的点,更好的表示点之间的关系.强调数据的排序展示以及数据之间的差距. 点图一般是横向展示,所以y轴为类别型变量,x轴为需要展示的数据值. dotchart函数 dotchart(x, labels = NULL, groups = NULL, gdata = NULL, ann = par("ann"), xaxt = par("xaxt"), frame.plot = TR

  • R语言绘图数据可视化Ridgeline plot山脊图画法

    目录 Step1. 绘图数据的准备 Step2. 绘图数据的读取 Step3. 绘图所需package的安装.调用 Step4. 绘图 调整透明度 更改顺序 更改线条形状 今天给大家介绍一下Ridgeline plot(山脊图)的画法. 作图数据如下: Step1. 绘图数据的准备 首先要把你想要绘图的数据调整成R语言可以识别的格式,建议大家在excel中保存成csv格式. Step2. 绘图数据的读取 data<-read.csv("your file path", heade

  • R语言绘图时输出希腊字符上下标及数学公式实现方法

    目录 希腊字母 上下标 paste 一个复杂的例子 进阶 数学公式 通常在我们写论文时,所需要的统计图是非常严谨的,里面的希腊字符与上下脚标都必须要严格书写.因此在使用R绘图时,如何在我们目标图中使用希腊字符.上标.下标及一些数学公式呢?在本博客中我们会进行详细的说明. 后面我们都将以一个最简单的绘图为例,只是将其标题进行修改. 希腊字母 使用希腊字符.上标.下标及数学公式,都需要利用一个函数:expression(),具体使用方式如下: plot(cars) title(main = expr

  • R语言绘图数据可视化pie chart饼图

    目录 Step 1. 绘图数据的准备 Step2. 绘图数据的读取 Step3.绘图所需package的调用 Step4. 饼图百分比标签准备 Step5.绘图 今天要给大家介绍的Pie chart(饼图),本来是不打算写这个的,因为用Excel画饼图实在是太方便了.本着能少动一下是一下的懒人原则,是不打算用R画的,再说,本小仙不是掌握了R作图大器ggplot2么,实在需要用的时候我就一句ggplot()+geom_pie()不就搞定了. 结果后来用Excel画饼图调整颜色.大小的时候着实有些崩

  • R语言作图之density plot(密度图)的制作步骤

    上次分享了小提琴曲线(violin plot)的作图方法,今天小仙同学给大家介绍一下如何用R画出漂亮的密度图(density plot). Step1. 绘图数据的准备 首先还是要把你想要绘图的数据调整成R语言可以识别的格式,把excel保存成csv格式. 数据的格式如下图:一列表示一种变量,第一行是列名 Step2. 绘图数据的读取 data<-read.csv("your file path", header = T) #注释:header=T表示数据中的第一行是列名,如果没

  • linux命令行下使用R语言绘图实例讲解

    使用系统:centos 6.4 64bit 在R语言中可以使用png()等函数生成图片,例如: png("aa.png")可以生成图片. 但是如果你是通过shell远程连接到系统上,可能会碰到如下错误: > png("aa.png") 错误于.External2(C_X11, paste("png::", filename, sep = ""), g$width,  :    无法打开PNG设备 此外: 警告信息: In

  • R语言绘图布局实例讲解

    在R语言中,par 函数可以设置图形边距,其中oma 参数设置outer margin, mar 参数设置margin, 这些边距有什么不同呢,通过box函数可以直观的看到 box 默认在当前图形绘制边框,第一个参数which = "plot", 所以在当前图形上绘制边框 which 的值除了plot 之外,还可以选择 figure, inner, outer 接下来分别用不同的值测试一下,为了区分,为不同的边框设置不同的颜色和类型,代码如下: attach(mtcars) plot(

  • R语言绘图公式与变量对象混合拼接实现方法

    当我们在R中进行绘图时,如果涉及到数学或统计公式的展现,可以使用函数:expression(),并且与 paste() 结合可以非常轻松的展现出自己想要展示的公式.详细的相关内容可参考: R进行绘图时输出希腊字符.上标.下标及数学公式 但这样做会遇到一个问题,在我们想批量产生大量含有不同变量值的标题时,如果遇到变量与公式的混合输出,就没有办法将变量里面的值进行输出了(使用 do.call() 等函数均不行). 举个栗子,若 m <- 10000,n <- 2000,我们如何让这两个变量直接显示

  • R语言绘图数据可视化pie chart饼图

    目录 Step 1. 绘图数据的准备 Step2. 绘图数据的读取 Step3.绘图所需package的调用 Step4. 饼图百分比标签准备 Step5.绘图 今天要给大家介绍的Pie chart(饼图),本来是不打算写这个的,因为用Excel画饼图实在是太方便了.本着能少动一下是一下的懒人原则,是不打算用R画的,再说,本小仙不是掌握了R作图大器ggplot2么,实在需要用的时候我就一句ggplot()+geom_pie()不就搞定了. 结果后来用Excel画饼图调整颜色.大小的时候着实有些崩

  • R语言绘制Facet violin plot小提琴刻面图实现示例

    目录 Step1.绘图数据的准备 Step2.绘图数据的读取 Step3.绘图所需package的安装.调用 Step4.绘图 Step5.美化 老铁们,许久未见啦.顺便说一下,最近可不是小仙同学偷懒哟,电脑上个月送修今天刚刚拿回来(想买联想Yoga的同学先问问自己会不会拆电脑换排线,我买的这台用了一个月,送修也用了一个月 ).最近我可攒了个大招呢,先来看看下面这张图,有没有很眼熟呢? 这张图在开始介绍R语言的时候就出现过啦,不过小仙同学当时并不知道怎么画.今天可以秀一把啦. Step1. 绘图

随机推荐