科学网

 找回密码
  注册

tag 标签: ggplot2

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

利用R软件包ggplot2绘制boxplot图
pujvzi 2018-9-10 19:20
利用 R 软件包 ggplot2 绘制 boxplot 图 数据集 : 三个阶段卵母细胞 (NSN,NSN-SN,SN) 的核内组蛋白集落 ( 分大小 ,large foci,small foci) 的数量 。 一般而言 ,ggplot2 需要的数据 , 每个样本为一行 , 样本信息需要有观测值 , 以及样本的属性信息等 。 文件名 :mydata2.txt ***************************** number oocyteType fociType 18 NSN large 18 NSN large 18 NSN large 15 NSN large 25 NSN large 26 NSN large 26 NSN large 11 NSN large 24 NSN large 16 NSN large 21 NSN large 18 NSN large 24 NSN large 19 NSN large 12 NSN large 20 NSN large 11 NSN large 17 NSN large 14 NSN large 18 NSN large 14 NSN large 23 NSN large 22 NSN large 16 NSN large 17 NSN large 15 NSN large 16 NSN large 19 NSN large 23 NSN large 19 NSN large 14 NSN large 3 SN large 6 SN large 9 SN large 0 SN large 11 SN large 1 SN large 3 SN large 1 SN large 2 SN large 2 SN large 5 SN large 2 SN large 4 SN large 3 SN large 4 SN large 7 SN large 7 SN large 5 SN large 15 NSN-SN large 7 NSN-SN large 2 NSN-SN large 13 NSN-SN large 15 NSN-SN large 9 NSN-SN large 8 NSN-SN large 11 NSN-SN large 13 NSN-SN large 9 NSN-SN large 1 NSN-SN large 19 NSN-SN large 8 NSN-SN large 11 NSN-SN large 13 NSN-SN large 35 NSN small 23 NSN small 12 NSN small 15 NSN small 55 NSN small 28 NSN small 21 NSN small 38 NSN small 17 NSN small 18 NSN small 18 NSN small 37 NSN small 19 NSN small 14 NSN small 41 NSN small 21 NSN small 30 NSN small 7 NSN small 9 NSN small 9 NSN small 8 NSN small 29 NSN small 8 NSN small 15 NSN small 8 NSN small 13 NSN small 14 NSN small 6 NSN small 12 NSN small 5 NSN small 23 NSN small 8 SN small 10 SN small 6 SN small 8 SN small 9 SN small 3 SN small 8 SN small 3 SN small 9 SN small 5 SN small 9 SN small 7 SN small 7 SN small 10 SN small 10 SN small 8 SN small 8 SN small 6 SN small 12 NSN-SN small 18 NSN-SN small 16 NSN-SN small 20 NSN-SN small 15 NSN-SN small 10 NSN-SN small 15 NSN-SN small 12 NSN-SN small 11 NSN-SN small 14 NSN-SN small 16 NSN-SN small 13 NSN-SN small 9 NSN-SN small 14 NSN-SN small 11 NSN-SN small ***************************** (1) 读入数据 mydata3-read.table(mydata3.txt,header=T,sep=\\t) (2) 初步绘图 library(ggplot2) ggplot(data=mydata3, aes(x=oocyteType,y=number))+geom_boxplot(aes(fill=fociType)) 得如下之图 : (3) 加横轴纵轴标签 p - ggplot(data=mydata3, aes(x=oocyteType,y=number))+geom_boxplot(aes(fill=fociType)) p1 - p+labs(x = oocyte developmental stage) p2 - p1+labs(y = XXX foci number) p2 (4) 修改坐标轴标签之属性 p3-p2 + theme(axis.title.x=element_text(color=red, size=15, face=bold)) p4-p3 + theme(axis.title.y=element_text(color=red, size=15, face=bold)) p4 (5) 修改背景 p4 + theme_bw() 背景应该在第一步开始设置 , 中途设置背景 , 将上面设置的标签掩盖了 。 背景修改方式 , 可见 ?theme_bw() (6) 更改 Figure Legend 位置 p5 - p4 + theme_bw() p5+theme(legend.position=c(0.8,0.8)) p5 +theme(axis.title.x=element_text(color=red, size=15, face=bold))+ theme(axis.title.y=element_text(color=red, size=15, face=bold)) (7) 修改颜色 p6 - p5 + scale_fill_manual(values=c(red,blue)) p6 (8) 修改坐标轴刻度标签颜色大小 p6-p6+theme(axis.text.x=element_text(size=13,color=black)) p6-p6+theme(axis.text.y=element_text(size=13,color=black)) p6 (9) 修改 legend p6+guides(fill=guide_legend(title=NULL)) (10) 加图题 p7-p6+guides(fill=guide_legend(title=NULL)) p7+annotate(text,label=my boxplot plot,x=2,y=50,color=Green,size=8)
个人分类: 生信|5285 次阅读|0 个评论
R包easyGgplot2安装
wbb121 2018-8-16 19:53
参考 https://www.cnblogs.com/nxld/p/6065237.html 安装easyGgplot2包: install.packages(devtools) library(devtools) install_github(easyGgplot2, kassambara) library(easyGgplot2) 包中有许多实用函数,例如ggplot2.multiplot,它是一个易于使用的功能,将多个由ggplot2绘制的图形放在在同一页面。其他具体见easyGgplot2的帮助文件。
个人分类: 常用软件|6903 次阅读|0 个评论
[转载]ggplot2包绘制聚类图和条形图的拼图
yzhlinscau 2018-7-26 22:19
作者:林元震( https://yzhlinscau2018.netlify.com) 有网友给我留言,如何绘制类似下述图形: 上述展示的图形,是我用ggplot2包绘制的,与网友提问的稍有区别,但已经很接近了。上面的图,如何实现呢?首先,该图肯定有左右两张图组成,于是就成了如何用ggplot2分别绘制左图和右图。左图实际上是聚类图,右图实际上是条形图。确定了思路,就好办了。 首先安装所需的程序包,为了便于绘制聚类图。 install.packages('ggdendro') (0) 示例数据集 示例采用某位网友的数据集,该数据含有10个样地里168个物种的数量分布。 spe - read.csv(trees2017three.csv, row.names=1) 数据集部分的属性如下: dim(spe) ## 10168 str(spe ) ##'data.frame':10obs.of8variables: ##$建始槭:int0400100120 ##$巴东冷杉:int01300000000 ##$白桦:int373033773151412 ##$白杨:int0020200000 ##$板栗:int0000303110 ##$包石栎:int0003000300 ##$宝兴木姜子:int5007000900 ##$藏刺榛:int304116417160 head(spe ) ##建始槭巴东冷杉白桦白杨板栗包石栎宝兴木姜子藏刺榛 ##S1003700053 ##S2413300000 ##S300020004 ##S400300371 ##S51037230016 ##S600700004 (1)使用ggplot2包绘制聚类图 首先进行聚类数据的预处理,包括数据的归一化、欧式距离计算,然后进行UPGMA聚类,聚类结果转为dendrogram类,再借助ggdendro包的 dendro_data() 函数可以生成ggplot2包绘图所需的聚类图数据和标签数据: spe.norm - vegan::decostand(spe, normalize) spe.ch- dist(spe.norm) spe.ch.UPGMA - hclust(spe.ch, method=average) dend - as.dendrogram(spe.ch.UPGMA) ddata - ggdendro::dendro_data(dend, type = rectangle) aa-seq(1.2,0,by=-.2) aa向量的作用是用于标注距离的刻度。现在就可以使用ggplot2包进行进化树绘制。 library(ggdendro) library(ggplot2) p1- ggplot(segment(ddata)) + geom_segment(aes(x = x, y = y, xend = xend, yend = yend)) + coord_flip() + theme(axis.title = element_blank(), axis.text.x = element_text(size=10), axis.line.x=element_line(), axis.text.y = element_blank(), axis.ticks.y=element_blank(), axis.ticks.length=unit(0.2,cm), panel.background=element_rect(fill=white))+ scale_y_reverse(limits =c(1.2,-0.1),expand = c(0, 0),breaks=aa)+ geom_text(data=label(ddata),aes(x=x,y=y,label=label),size=3,hjust=-.1) 代码说明:进化树数据在 segment(ddata) 中,分别含有x、y、xend和yend,通过 geom_segment() 绘制进化树。标签数据在 label(ddata) ,分别含有x、y和label,通过 geom_text() 添加标签。 segment() 、 label() 来自ggdendro包。 ok,进化树或聚类图基本成型。如果读者细心的话,会看到图下方的刻度超出0,我目前还没找到好的方法来解决该问题。在代码中,我设置让标签超出0,感兴趣的读者,可以自行研究。 (2) 使用ggplot2包绘制条形图 绘制右边的条形图,其实比较容易,但细心的读者,会发现条形图的y轴标签与进化树的一致,于是主要问题就成了如何将进化树的标签传递给绘制条形图的数据集里? 这里的m1数据集,是我随意模拟的一份数据集,只是为了演示的目的,没太多的科学意义,但不代码下述的绘图代码没有现实意义。首先,来看看数据的结构(请记住,任何时候查看并弄清数据的结构,都非常重要!): head(m1) ## sample Ind N0 ## 1 S10 A1 7 ## 2 S10 A2 8 ## 3 S10 A3 6 ## 4 S10 A4 3 ## 5 S2 A1 10 ## 6 S2 A2 14 str(m1) ## 'data.frame': 40 obs. of 3 variables: ## $ sample: Factor w/ 10 levels S10,S2,S6,..: 1 1 1 1 2 2 2 2 3 3 ... ## $ Ind : chr A1 A2 A3 A4 ... ## $ N0 : int 7 8 6 3 10 14 12 18 2 20 ... 事实上,m1数据集为样地,样地内的某些指标(诸如多度、频度、重要值等,比例中随意拟合为A1到A4)及其相应数值。这里的样地sample就是之前进化树的标签。 先看看ggplot2如何绘制条形图。 aa1-seq(0,1,by=.2) p2- ggplot(data=m1, aes(x=sample, y=No, fill=Ind)) + geom_bar(stat=identity,width=1,color='black', position =position_fill(reverse=TRUE))+ xlab('')+ylab('')+coord_flip()+ scale_y_continuous(expand = c(0, 0),breaks=aa1)+ theme(#axis.text.y = element_blank(), axis.text.x = element_text(size=10), axis.ticks.y=element_blank(), axis.line.x=element_line(colour=black), panel.background=element_rect(fill=white) ) 代码说明:这里的条形图,与常见的不同,用了x、y变量映射,X指定样地,y指定数值,Ind指定指标并用不同颜色填充。geom_bar()中的参数 stat=identity ,必须是这样的,因为我们要对x变量(即样地sample)指定y数值(No)。参数 reverse=TRUE 的作用是让图例与条形图的对应关系更直观,读者可以修改为 reverse=FALSE ,通过查看图形变化,即可明白。 条形图标签如何与进化树标签一致呢?实现代码如下: dend_labels - label(ddata)$label #m1-dplyr::arrange(m1,sample) m1$sample- factor(m1$sample, levels = dend_labels) 代码说明:先获取进化树的标签,赋给向量dend_labels,然后再将其传给m1数据集中样地sample的水平,并设为因子。如果m1未按样地排序,先通过dplyr包的arrange()排序后,再进行之前的因子数据转换。 这个方法非常巧妙,也很好用! 最后,通过gridExtra包的grid.arrange()将上述两张图合并在一起,这个很简单: library(gridExtra) grid.arrange(p1,p2,nrow=1)
个人分类: R|2897 次阅读|0 个评论
《ggplot2:数据分析与图形艺术》笔记3:用图层构建图像
热度 1 yjjh143 2018-1-2 22:45
在前面的练习中,我们使用qplot练习作图,作为ggplot2的快速入门。然而,qplot的局限性在于它只能使用一个数据集和一组图形属性映射,当我们要进行复杂数据的统计分析时,qplot就不够用了。解决这一问题的方法就是使用图层,每一个图层可以有属于自己的数据集和图形属性映射,附加的数据元素可以通过图层添加到图形中。 创建绘图对象 当我们调用qplot()时,它其实为我们做了许多幕后工作: 创建一个图形对象 添加图层并展示结果 如果想手动创建图形对象,就要使用ggplot()函数。该函数有两个主要的参数: 数据 和图形属性 映射 。 数据: 指定绘图所使用的默认数据集(必须是数据框) 映射: 将图形属性和变量名放在函数aes()的括号中即可创建映射 比如,通过下面的代码,即可创建一组默认映射: #x为carat,y为price,colour为cutp - ggplot(diamonds, aes(carat, price, colour = cut)) 不过,上面的图形对象在加上图层之前是无法显示的。 图层 创建好绘图对象后,我们可以使用 + 来添加图层: p + geom_point() 再通过添加图层而添加几何对象时,我们需要注意: 每一个几何对象都对应着一个默认的统计变换和位置参数,而每一个统计变换都对应着一个默认的几何对象参数。所以对于一个图层,我们只需要设定stat或geom参数即可。 数据 ggplot2要求数据集必须是一个数据框(data frame) ggplot2会从我们给定的数据框中提取绘图所需的变量,并生成一个新的数据集,而不是直接在原数据上进行数据变换 使用ggplot2作图时,数据是以副本二不是引用的形式存储在图形对象中的,这样可以使我们: 1.即使数据改变了,绘图不会改变 2.ggplot2的对象都是自含型的,所以它可以被存储到磁盘上,并可被直接加载(load())运行 图形属性映射 aes()函数 用来将数据变量映射到图形中,从而使变量成为可以被感知的图形属性。 aes()函数中有一系列的图形属性参数: #创建映射aes(x = weight, y = height, colour = age)#x,y可以省略,直接输入映射值aes(weight, height, colour = age) 几何对象 几何对象 ,简称为geom,它执行着图层的实际渲染,控制着生成的图像类型。 每一个几何对象都有一组它能识别的图形属性和一组绘图所需的值。 每一个几何对象都有一个默认的统计变换,并且每一个统计变换都有一个默认的几何对象。 统计变换 统计变换 。简称为stat,即对数据进行统计变换,它通常以某种方式对数据信息进行汇总。 统计变换可将输入的数据集看做输入,将返回的数据集作为输出,因此统计变换可向元数据集中插入新的变量。例如用来绘制直方图的stat_bin统计变量会生成如下的变量: count:每个组里观测值得数目; density:每个组里观测值的密度(占整体的百分数/组宽) x:组的中心位置 这些生成变量可被直接调用,调用生成变量时,必须使用..将其名字围起来,以和原数据集中的变量区分 比如: ggplot(diamonds, aes(carat)) + geom_histogram(aes(y = ..density..), binwidth = 0.1) 位置调整 位置调整: 是对图层中的元素位置进行微调。位置调整一般多见于处理离散型数据,连续型数据一般很少出现完全重叠的问题。 常用的位置调整参数见下图: 整合 一旦熟悉了图层操作,就可以把本章所介绍的各种图层功能结合起来,轻松做出复杂的图形。 结合几何对象和统计变换 将几何对象和不同的统计变换进行组合,可以轻松做出新颖的图形。下面,我们基于相同的直方图的统计变换,使用不同的几何对象,以不同的形式来展示结果:面积、点和瓦块图。 # 创建绘图对象d - ggplot(diamonds, aes(carat)) + xlim(0,3)# 对数据进行统计变换,并绘制面积图层d + stat_bin(aes(ymax = ..count..), binwidth =0.1 , geom =area)# 对数据进行统计变换,并绘制点图图层d + stat_bin(aes(size = ..density..), binwidth = 0.1, geom = point, position = identity)# 对数据进行统计变换,并绘制瓦块图图层d + stat_bin2d(aes(y = 1, fill = ..count..), binwidth = 0.1, geom = tile, position = identity) 绘制面积图图层: 绘制点图图层: 绘制瓦块图图层:
个人分类: R 学习笔记|3325 次阅读|1 个评论
《ggplot2:数据分析与图形艺术》笔记2:从qplot开始入门
yjjh143 2018-1-1 21:05
1.什么是qplot qplot的意思是quick plot(快速作图),利用qplot我们可以非常方便地绘制各种图形。有时在其他作图系统中需要好几行代码才能搞定的事情,在qplot()中只需要一行代码就可以搞定。 通过 ?qplot() 命令查看qplot()的帮助文档: 使用方法: qplot(x, y = NULL, …, data, facets = NULL, margins = FALSE, geom = “auto”, xlim = c(NA, NA), ylim = c(NA, NA), log = “”, main = NULL, xlab = deparse(substitute(x)), ylab = deparse(substitute(y)), asp = NA, stat = NULL, position = NULL) 参数: x, y : 定义x轴和y轴 data: 制定作图的数据集 facets: 分面 margins: xlim,ylim: 设置x轴和y轴的显示区间,如xlim=c(0,20),ylim=c(-0.9,-0.5) geom: 定义几何对象 log: 指定哪一个坐标轴应该取对数,log=”x”表明x轴取对数,log=”xy”说明xy同时取对数 main: 图形的主标题,放置在图形顶端中部,以大号字体显示。如main=”plot tittle” xlab,ylab: 设置x轴和y轴的标签文字 2.数据集准备 使用ggplot2中自带的一个叫做diamonds的数据集,里面包含了月5400颗钻石的价格和质量信息。示例如下: 为了方便示例,随机截取diamonds中的100个样本: set.seed(1410) #使每次产生的随机数相同 dsmall - diamonds 3.一个简单的例子:绘制一张散点图 在Rstudio中输入下面的代码,画一张以carat为x轴price为y轴的散点图: qplot(carat, price, data = diamonds) qplot支持将变量的函数作为参数,下面画一张log(carat)对log(price)的图: qplot(log(carat), log(price), data = diamonds) 画一张重量对体积(近似以x y z表示)的图: qplot(carat, x*y*z, data = diamonds) 4.图形属性 在qplot中可以设置图形属性,以更形象地展示图形中的信息,常用的图形属性包括形状(shape)、颜色(colour)、大小(size)、透明度(alpha)等。 qplot(carat, price, data = dsmall) #不设置图形属性 qplot(carat, price, data = dsmall, colour = color) #设置color的颜色属性 qplot(carat, price, data = dsmall, shape = cut) #设置cut的形状属性 qplot(carat, price, data = dsmall, colour = color,shape = cut) #设置color的颜色属性,同时设置设置cut的形状属性 不设置图形属性: 设置color的颜色属性: 设置cut的形状属性: 设置color的颜色属性,同时设置设置cut的形状属性: 图形属性的手动设置 在上面的例子中,图形属性都是采用ggplot2的默认值,其实,我们可以通过 I() 自己设定图形属性。 qplot(carat, price, data = dsmall, colour = I(red))#手动设置图形的颜色属性 #手动设置图形的透明度属性,分母越小,透明度越大,通过设置透明度可以查看数据密集的区域 qplot(carat, price, data = diamonds, alpha = I(1/10)) qplot(carat, price, data = diamonds, alpha = I(1/100)) qplot(carat, price, data = diamonds, alpha = I(1/200)) 设置alpha为1/10: 设置alpha为1/100: 设置alpha为1/200: 5.几何对象 在ggplot2中,几何对象描述了应该用何种对象对数据进行展示,其中一些几何对象还关联了相应的统计变换。通过改变几何对象,我们几乎可以画出任何形式的图。 下面展示一些常用的几何对象: 展示二维的变量关系: geom = “point”:用于绘制散点图,当我们指定x轴和y轴后,ggplot2默认绘制散点图 geom = “smooth”:你和一条平滑曲线,并将曲线和标准误展示在图中 geom = “boxplot”:绘制箱线图,用于展示一系列点的分布情况 geom = “jitter”:绘制扰动图,用于展示一系列点的分布情况 geom = “path”和geom = “line”:在数据的点之间绘制连线,线条图(line)只能从创建从左到右的连线,而路径图(path)根据点在统计表格中的顺序进行连线。 展示一维的变量关系: 对于一维分布,几何对象的选择是根据变量的类型而指定的。 对于连续变量:geom = “histogram”绘制直方图,geom = “freqpoly”绘制频率多边形,geom = “density”绘制密度曲线。如果不指定几何对象,ggplot默认绘制直方图。 对于离散变量:geom = “bar”绘制条形图。 向点图中添加平滑曲线 用途 :如果散点图中有非常多的数据点,在展示数据时,数据的变化趋势可能并不明显,这时我们可以在图中添加一条平滑曲线,用来更清楚地展示数据的变化趋势。 #添加平滑曲线 qplot(carat, price, data = diamonds, geom = c(point,smooth)) qplot(carat, price, data = dsmall, geom = c(point,smooth)) qplot(carat, price, data = dsmall, geom = c(point,smooth),se = FALSE) #不使用标准误 作图效果依次如下: 绘制diamonds的平滑曲线: 绘制dsmall的平滑曲线: 绘制dsmall的平滑曲线,并去掉标准差: 不同平滑器的选择: 在拟合平滑曲线时,可以通过method来选择不同的平滑器。 当数据量较小时(1000),默认method = “loess”,使用局部回归的方法绘制平滑曲线。可通过span参数控制平滑度,取值范围从0(很不平滑)到1(很平滑)。 当数据量大于1000时,默认使用method = “gam”拟合平滑线。 箱线图和扰动图 用途: 如果一个数据集中包含了一个分类变量和一个或多个连续变量,可以通过箱线图和扰动图显示连续变量是如何随着分类变量水平的变化而变化的。 #使用箱线图和扰动图显示钻石的价格如何随着颜色的变化而变化 qplot(color, price/carat, data = diamonds, geom = boxplot) #箱线图 qplot(color, price/carat, data = diamonds, geom = jitter) #扰动图 箱线图: 扰动图: 通过改变扰动图的透明度,展示数据点集中的部分: qplot(color, price/carat, data = diamonds, geom = jitter, alpha = I(1/5)) #扰动图,透明度为1/5 qplot(color, price/carat, data = diamonds, geom = jitter, alpha = I(1/50)) #扰动图,透明度为1/50 qplot(color, price/carat, data = diamonds, geom = jitter, alpha = I(1/200)) #扰动图,透明度为1/200 透明度为1/5: 透明度为1/50: 透明度为1/200: 箱线图和扰动图的比较 扰动图可将所有的点绘制到图中,重叠比较严重,可通过调节透明度部分解决重叠问题。可调控size、colour、shape等图形属性。 箱线图使用数据的五个统计量(最小值,第一四分位数、中位数、第三四分位数和最大值)对对数据进行概括,可参考的统计值更多。可用colour控制外框线的颜色,用fill设置填充颜色,用size调节线的粗细。 直方图和密度图 用途: 直方图和密度曲线图可以展示单个变量的分布,相对于箱线图而言,它们提供了更多的关于单个分布的信息,但不容易在不同组之间进行比较。 qplot(carat, data = diamonds, geom = histogram) #直方图 qplot(carat, data = diamonds, geom = density) #密度曲线图 直方图: 密度曲线图: 平滑度的调整: 直方图:通过binwidth调节组距,来调节平滑度。 密度曲线图:使用adjust参数控制曲线的平滑度,adjust取值越大,曲线越平滑。 #直方图,binwidth=1 qplot(carat, data = diamonds, geom = histogram, binwidth = 1) #直方图,binwidth=0.1 qplot(carat, data = diamonds, geom = histogram, binwidth = 0.1) #直方图,binwidth=0.01 qplot(carat, data = diamonds, geom = histogram, binwidth = 0.01) 直方图,binwidth=1 直方图,binwidth=0.1 直方图,binwidth=0.01 #密度曲线图, adjust = 1 qplot(carat, data = diamonds, geom = density, adjust = 1) #密度曲线图, adjust = 0.1 qplot(carat, data = diamonds, geom = density, adjust = 0.1) #密度曲线图, adjust = 0.01 qplot(carat, data = diamonds, geom = density, adjust = 0.01) 密度曲线图, adjust = 1: 密度曲线图, adjust = 0.1: 密度曲线图, adjust = 0.01: 要在不同组之间进行分布对比,只需要再添加一个图形映射即可: #直方图,binwidth=1,通过填充颜色比较钻石颜色分组 qplot(carat, data = diamonds, geom = histogram, binwidth = 1, fill = color) #密度曲线图, adjust = 1,通过线条颜色比较钻石颜色分组 qplot(carat, data = diamonds, geom = density, adjust = 1, colour = color) 直方图,binwidth=1,通过填充颜色比较钻石颜色分组: 密度曲线图, adjust = 1,通过线条颜色比较钻石颜色分组: 条形图 用途: 使用条形图统计并展示每一个水平下的观测数量。在离散型变量的情况下,条形图和直方图呈现的结果相似。 #绘制钻石颜色的条形图 qplot(color, data = diamonds, geom = bar) 时间序列中的线条图和路径图 用途: 线条图和路径图通常用于可视化时间序列数据。线条图将点从左向右依次连接,而路径图按照点在数据集中出现的顺序进行连接。 下面使用ggplot2中自带的economics数据集进行演示,它包含了美国40年的经济数据。 #绘制失业率(unemploy/pop)和时间变化关系的线条图 qplot(date, unemploy/pop, data = economics, geom = line) #绘制失业率(unemploy/pop)和失业星期中位数(uempmed)变化关系的路径图 qplot(uempmed, unemploy/pop, data = economics, geom = path) #绘制失业率(unemploy/pop)和失业星期中位数(uempmed)变化关系的路径图,加上点 qplot(uempmed, unemploy/pop, data = economics, geom = c(point, path)) #绘制失业率(unemploy/pop)和失业星期中位数(uempmed)变化关系的路径图,加上点,年份映射上颜色 qplot(uempmed, unemploy/pop, data = economics, geom = c(point, path), colour = date) 绘制失业率(unemploy/pop)和失业星期中位数(uempmed)变化关系的路径图: 绘制失业率(unemploy/pop)和失业星期中位数(uempmed)变化关系的路径图,加上点: 绘制失业率(unemploy/pop)和失业星期中位数(uempmed)变化关系的路径图,加上点,年份映射上颜色: 分面 在前面的例子中,我们已经介绍过,可以使用图形属性(颜色和形状)来比较不同的分组,可以将所有的组绘制在一张图中。此外,分面也可以实现相同的功能,它将数据分隔成若干子集,然后创建一个图形的矩阵,将每一个子集绘制到图形矩阵的窗格中;所有子图采用相同的图形类型,并进行了一定的设计,使得他们之间可以进行方便的比较。 #以carat为x轴,并以color创建分面,将频数映射的y轴 qplot(carat, data = diamonds, facets = color ~., geom = histogram, binwidth = 0.1, xlim = c(0,3)) #以carat为x轴,并以color创建分面,将密度映射的y轴 qplot(carat, ..density.., data = diamonds, facets = color ~., geom = histogram, binwidth = 0.1, xlim = c(0,3)) 以carat为x轴,并以color创建分面,将频数映射的y轴: 以carat为x轴,并以color创建分面,将密度映射的y轴:
个人分类: R 学习笔记|4520 次阅读|0 个评论
《ggplot2:数据分析与图形艺术》笔记1:图形语法
yjjh143 2017-12-28 21:24
【反思】学习的路径:厚积薄发 最近一段时间,一直在自学生物信息学。由于白天还有繁重的科研任务,只能每天晚上回家后,在10: 00-12:00之间安排时间学习。经过近两个月的学习,已经熟悉了Linux的常规操作,学了一点R语言基础和ggplot2的基本使用方法。 由于自己时间有限,就一直跟着《基因课》的网络课程学习。可是时间长了,慢慢发现了问题。《基因课》的课程几分钟一节,视频演示某一操作,而对相关背景知识介绍的不太全面。很多时候,跟着视频一步一步操作,确实能得到相同的结果,但是这背后的原因就不太清楚了,理解的当然就不透彻。等到应用的时候,当然不会融会贯通。 学习真的是偷不得半点懒的,每一步路都要脚踏实地。该吃的苦,该流的汗,一点都不能少。 对于正在学习的ggplot2,还是决定找一本经典的教材,一边学习教材中的基础知识,一边进行《基因课》相关课程的学习,以加深自己的理解。于是选择了这本经典的《ggplot2:数据分析与图形艺术》,边学习边做笔记总结。 ggplot2的图形语法 ggplot2作图的规则是根据图形语法设计的,这一语法基于《Grammar Graphics》一书,由一系列独立的图形部件组成,并能以许多种不同的方式组合起来。这一点使得ggplot2非常强大,使得使用者可以根据自己的需要,将各种不同的图形部件进行组合,绘制出具有特色的图形。 一张统计图就是从数据到几何对象的图形属性的映射,并将图形绘制在某个坐标系中。其中,绘制图形前,数据可能需要进行统计变换;绘制图形时,还可能需要分面以生成数据不同子集的图形。 ggplot2的图形部件 数据(data) 映射(mapping) 几何对象(geom):在图中实际看到的图形元素,点、线、多边形 统计变换(stats):是对数据进行的某种汇总。例如,将数据分组以创建直方图,或将一个二维的关系用一个线性模型进行解释。 标度(scale):将数据的取值映射到图形空间,例如用颜色、大小、或形状表示不同的取值。展现标度最常见的做法是绘制图例和坐标轴,它们实际上是从图形到数据的一个映射,是读者可以从图形中读取原始的数据。 坐标系(coord):描述了数据是如何映射到图形所在的平面的,同时提供了看图所需要的坐标轴和网格线。 分面(facet):描述了如何将数据分为各个子集,以及如何对子集进行作图并进行联合展示。
个人分类: R 学习笔记|3598 次阅读|0 个评论
ggplot绘图的艺术-3:映射:将数据变量对应到图形属性
yjjh143 2017-12-12 23:04
1.映射 在上一节练习 ggplot绘图的艺术-2:ggplot2的绘图思想 中,我们已经涉及到了映射的概念。 所谓映射,就是数据集中的数据关联到相应的图形属性过程中一种对应关系。 映射主要分为以下几种类型: 颜色类:color(颜色或边框颜色)、fill(填充颜色)和alpha(透明度) 形状类:linetype(线型)、size(点的大小或线的宽度)和shape(形状) 位置类:x、y、xmin、xmax、ymin、ymax、xend、yend 特殊类:一类是group和order,另一类是字符串映射 下面,就以上述的映射关系进行演示: #加载所需的包 library(ggplot2) library(dplyr) #使用ggplot2进行绘图,建立相应的映射关系 ggplot(data = dexp, aes(x = Sample, y = Expression))+ geom_point(aes(color = Gene, size = Length, shape = Group)) 以上代码作出图的效果如下: 2.分组 在ggplot中我们大概可以把几何对象分为2种: 个体几何对象:绘制的图像中的每一个点对应数据框中的每一个观测值,如geom_point 群组几何对象:绘制的图像中的每一个对象,对应数据框中多个观测值的统计结果,如geom_boxplot(用于绘制箱线图) 所以在使用类似于geom_boxplot这一类群组几何对象时,需要进行分组,ggplot默认以离散型变量分组。 变量按其数值表现是否连续,分为 连续变量 和 离散变量 。 离散变量 指变量值可以按一定顺序一一列举,通常以整数位取值的变量。在一定区间内可以任意取值的变量叫 连续变量 ,其数值是连续不断的,相邻两个数值可作无限分割,即可取无限个数值。 #绘制背景图层 p - ggplot(data = dexp, aes(x = Sample, y = Expression)) #添加箱线图层,默认以离散型变量Sample进行分组 p + geom_boxplot() #绘制背景图层 p - ggplot(data = dexp, aes(x = Sample, y = Expression)) #添加箱线图层,指定以Group进行分组 p + geom_boxplot(aes(group = Group)) 3.分面 在进行生物信息学数据处理时,我们有时需要按不同的变量进行分组,分别绘制图形。比如,在上面的例子中。我们如果想要以Group分组,分别绘制基因的表达信息,实现一页多图的效果,如何实现呢?这就要涉及到ggplot中的另一个非常重要的概念:分面。 ggplot中实现分面有两个函数:facet_wrap和facet_grad。 (1)facet_wrap:以一个变量进行分面 facet_wrap(facets, nrow = NULL, ncol = NULL, scales = “fixed”, shrink = TRUE, labeller = “label_value”, as.table = TRUE, switch = NULL, drop = TRUE, dir = “h”, strip.position = “top”) 重要参数: facets:分面参数如~Group,表示用Group变量进行数据分类 nrow:绘制图形的行数 ncol:绘制图形的列数,一般nrow/ncol只设定一个即可 scales: fixed,小图都使用统一的坐标 free:每个小图按照自己的数据自由调整坐标 free_x:自由调整X轴刻度范围 free_y:自由调整y轴刻度范围 ggplot(data = dexp, aes(x = Sample, y = Expression))+ geom_point(aes(color = Gene, size = Length, shape = Group))+ facet_wrap(~Group, scales = free) 效果如下: #以基因进行分面,绘制每个基因的表达量 ggplot(data = dexp, aes(x = Sample, y = Expression))+ geom_point()+ facet_wrap(~Gene, scales = free, nrow = 10) 结果如下: (2)facet_grid:同时以两个变量进行分面 facet_grid(facets, margins = FALSE, scales = “fixed”, space = “fixed”,shrink = TRUE, labeller = “label_value”, as.table = TRUE,switch = NULL, drop = TRUE) 与facet_wrap不同的重要参数: facets:应用两个变量分面,如Gene~Group,意为按Gene分行,按Group分列 margins:True,包含所有数据的组 space:每张小图的坐标轴宽度,值同scales 以两个变量Gene和Group进行分面: dexp_small-filter(dexp, Gene %in% paste(G, 1:10, sep = )) ps - ggplot(data = dexp_small, aes(x = Sample, y = Expression)) ps + geom_point(aes(color = Length))+ facet_grid(Gene~Group,scales = free) 结果如下:
个人分类: R 学习笔记|5375 次阅读|0 个评论
ggplot绘图的艺术-2:ggplot2的绘图思想
yjjh143 2017-12-11 23:21
在本次练习中,我们通过一个简单的例子,快速了解ggplot2作图的思想。 1.ggplot2的安装 通过以下命令,安装ggplot2包 #安装ggplot2install.packages(ggplot2)#加载需要使用的包library(ggplot2)library(dplyr) 2.数据的准备 在ggplot绘图的艺术-1:数据准备中,我们对要进行作图的数据进行了处理,使其符合R作图通用的tidy data规则。现在,我们截取其中的一部分数据,方便演示: #提取dexp数据框group1中G1到G10基因在S1-S3中的表达量dexp_small-filter(dexp, #使用dplyr包中的filter命令进行数据的过滤 Group == group1, #截取group1中的数据 Gene %in% paste(G, 1:10, sep = )) %% #选取G1到G10基因 select(-Group, -Length) #去掉Group和Length这两列 结果如下: 3.使用ggplot2作图 运行如下代码: ggplot(data=dexp_small,aes(x=Sample, y=Expression))#1.调用ggplot包,对数据框dexp_small进行作图#2.以Sample为X轴,Expression为Y轴 运行结果如下: 我们可以看到,运行出来的结果为一张白板,只有坐标轴,而没有各种元素。 为突表添加散点图: ggplot(data=dexp_small,aes(x=Sample, y=Expression))+ geom_point() 效果如下: 为上图散点添加颜色: ggplot(data=dexp_small,aes(x=Sample, y=Expression,color = Gene))+ geom_point() 4.总结 在上面的例子中,我们接触到了ggplot2作图过程中最重要的三个概念:映射、图层和几何对象。 aes()函数是ggplot2中的映射函数, 所谓的映射即为数据集中的数据关联到相应的图形属性过程中一种对应关系 ggplot2中图层的概念和PS中图层的概念很像, 可以这样理解ggplot2中的图层:每个图层可以代表一个图形组件, 这些组件以图层的方式叠加在一起构成一个绘图的整体, 在每个图层中的图形组件又可以分别设定数据、映射或其他相关参数, 因此组件之间又是具有相对独立性的。 几何对象执行着图层的实际渲染, 控制着生成的图像类型。例如用geom_point()将会生成散点图, 而geom_line会生成折线图。 注:本文是我在 基因课 网络课程《ggplot:绘图的艺术》的学习笔记,使用Markdown写作。
个人分类: R 学习笔记|3221 次阅读|0 个评论
ggplot绘图的艺术-1:数据准备
yjjh143 2017-11-29 00:47
在使用ggplot2进行绘图之前,我们需要先把数据整理成规范的格式。在R语言入门中我们了解到,ggplot2只支持tidy格式的数据,因此我们需要先转换数据格式。 1.设置工作目录 # 使用setwd命令设置工作目录 setwd ( H:/GeneK/ggplot ) # 使用getwd命令查看工作目录是否设置成功 getwd () 注意:在Windows上设置工作路径时,记得要把从Windows资源管理器中复制过来的路径中的符号 \\ 改成 / ,否则Rstudio无法识别,会报错。 如: 我从Windows中直接复制过来的地址是: H:\\GeneK\\ggplot ,必须修改成 H:/GeneK/ggplot Rstudio才能识别。 2.读取数据 使用R的read.table读取相关数据: # 读取基因表达信息 gene_exp - read . table ( file = gene_exp.txt , sep = \\t , header = T , stringsAsFactors = F ) # 读取基因长度注释信息 gene_len - read . table ( file = gene_len.txt , sep = \\t , header = T , stringsAsFactors = F ) # 读取样品分组信息 group - read . table ( file = group.txt , sep = \\t , header = T , stringsAsFactors = F ) 读取结果如下: 1.基因表达信息 2.基因长度注释信息 3.样品分组信息 3.数据变形 (1)将数据转换成Tidy data格式 由基因的表达信息表格我们可以看到,该表格不符合tidy data的原则,需要使用Tidyr包对数据格式进行调整。 # 加载Tidyr包 library ( tidyr ) #使用gather函数将数据整理为Tidy格式 dexp1 - gather ( gene_exp , key = Sample , value = Expression , - Gene ) (2)添加基因注释和样品分组信息 #加载dplyr包 library ( dplyr ) #使用left_jion添加基因长度注释信息 dexp2 - left_join ( dexp1 , gene_len , by = Gene ) #使用left_jion添加样品分组信息 dexp3 - left_join ( dexp2 , group , by = Sample ) #使表格的列按Gene,Sample,Group,Expression,Length的顺序排列 dexp4 - select ( dexp3 , Gene , Sample , Group , Expression , Length ) #使表格按照基因名升序排列 dexp - arrange ( dexp4 , Gene ) 最终的呈现结果: 当然,我们还可以使用管道操作符,把上面的各步操作连接起来,一步完成转换: dexp - gather ( gene_exp , key = Sample , value = Expression , - Gene )%% left_join ( gene_len , by = Gene )%% left_join ( group , by = Sample ) %% select ( Gene , Sample , Group , Expression , Length )%% arrange ( Gene ) 注:本文是我在 基因课 网络课程《ggplot:绘图的艺术》的学习笔记,使用Markdown写作。
个人分类: R 学习笔记|3910 次阅读|0 个评论
[转载]ggplot2-一页多图(不同数据集, 灵活合并)
热度 1 meiweipingg 2017-7-10 20:48
本着 “Basic Knowledge worth spreading ” 的宗旨,偶尔发现了这个叫做 “multiplot()” 的 R function, 经测有效好用,特转载之,感谢 csdn博主藏锋者 的无私分享。 (补充:利用facet作一页多图可以参考 https://plot.ly/ggplot2/facet/ ) ggplot2 的分面(facet) 可以绘制一页多图, 但是, 必须 是来自 同一个数据集 的图形, 局限性很大 . 如果我们 有多个不同来源的 图形,想绘制到一张图上又该如何处理呢? multiplot() 提供了极为强大的函数功能. multiplot() 可以设置行列, 也可以设置一个矩阵进行布局. # Multiple plot function ## ggplot objects can be passed in ..., or to plotlist (as a list of ggplot objects) # - cols: Number of columns in layout# - layout: A matrix specifying the layout. If present, 'cols' is ignored. ## If the layout is something like matrix(c(1,2,3,3), nrow=2, byrow=TRUE), # then plot 1 will go in the upper left, 2 will go in the upper right, and# 3 will go all the way across the bottom.# ### 代码定义从此处正式开始--------------------------------------------------- multiplot-function(..., plotlist=NULL, file, cols=1, layout=NULL){ library(grid) # Make a list from the ... arguments and plotlist plots-c(list(...), plotlist) numPlots=length(plots) # If layout is NULL, then use 'cols' to determine layout if(is.null(layout)){ # Make the panel # ncol: Number of columns of plots# nrow: Number of rows needed, calculated from # of cols layout-matrix(seq(1, cols*ceiling(numPlots/cols)), ncol=cols, nrow=ceiling(numPlots/cols)) } if(numPlots==1){ print(plots ]) } else { # Set up the page grid.newpage() pushViewport(viewport(layout=grid.layout(nrow(layout), ncol(layout)))) # Make each plot, in the correct location for(i in 1:numPlots){ # Get the i,j matrix positions of the regions that contain this subplot matchidx-as.data.frame(which(layout==i, arr.ind=TRUE)) print(plots ], vp=viewport(layout.pos.row=matchidx$row, layout.pos.col=matchidx$col)) } } } # function代码定义结束------------------------------------------------------------ # 范例 ----------------------------------------------------------------------------- library(ggplot2) p1-ggplot(ChickWeight, aes(x=Time, y=weight, colour=Diet, group=Chick))+ geom_line()+ ggtitle(Growth curve for individual chicks) p2-ggplot(ChickWeight, aes(x=Time, y=weight, colour=Diet))+ geom_point(alpha=.3)+geom_smooth(alpha=.2, size=1)+ ggtitle(Fitted growth curve per diet) p3-ggplot(subset(ChickWeight, Time==21), aes(x=weight, colour=Diet))+ geom_density()+ ggtitle(Final weight, by diet) p4-ggplot(subset(ChickWeight, Time==21), aes(x=weight, fill=Diet))+ geom_histogram(colour=black, binwidth=50)+facet_grid(Diet~ .)+ ggtitle(Final weight, by diet)+ theme(legend.position=none) # No legend (redundant in this graph) # 合并为一张图------------------------------------------------------------------- multiplot(p1, p2, p3, p4, cols=2) # 友情补充:合并为一张图-------------------------------------------------- # 如果是 奇数张图片 ,想在合并后的图片的 右上角留白 的话,代码如下------ multiplot(p1, p2, none , p4, cols=2) #已测有效 # 注:本文转载自 http://blog.csdn.net/tanzuozhev/article/details/51112223
个人分类: R语言|9603 次阅读|5 个评论
ggplot2富集分析图
Polya 2017-4-14 11:04
ggplot2 富集分析图 功能:是用来展示组成的事物类别在相应类别总体分布中的比例 本质:将相应类别的总体的分布考虑进去,得到相应的比例 组成: Y 轴以注释信息类别 X 轴以 富集因子 为主进行转换 GO 富集分析: GO 在指定基因集中的所占的比例 基因富集分析 : 是指将基因按照先验知识,也就是基因组注释信息进行分类。 # Clear workspace rm(list = ls()) library(ggplot2) #library(ggplot2) #set your path path-setwd(D:/Test/R/R_paint) dat - read.table(umf.txt, header=T,sep=\t) dat #pdf(file=rich.pdf,width=10,height = 6) png(rich.png,width=600,height=800) ggplot(data=dat,aes(x=Rich_factor,y=Description,colour=qValue,size=Gene_number)) + geom_point() +scale_size_area() + scale_colour_gradientn(colours=c(red,yellow,green,blue))+ labs(x=Rich factor,y=Pathway of KEGG,title= up KEGG enrich of DEGs between Middle and Fresh)+ #theme(plot.title=element_text(size=16,colour=black,hjust=0.5))+ theme(plot.title=element_text(size=16,colour=black, hjust=0.5))+ theme(axis.title.y=element_text(size=14,colour=black))+ theme(axis.title.x=element_text(size=14,colour=black))+ theme(legend.text=element_text(size=14,colour=black),legend.title=element_text(size=12))+ theme(axis.text.x=element_text(size=14,colour=black))+ theme(axis.text.y=element_text(size=14,colour=black))+ theme(panel.grid.minor=element_blank()) dev.off() 参考: https://guangchuangyu.github.io/cn/2012/04/enrichment-an
个人分类: ggplot2|11 次阅读|0 个评论
ggplot2火山图
Polya 2017-4-13 15:02
ggplot2 火山图 与 ggrepel 功能:是用来展示组间差异数据的图像 本质:是一种特殊的散点图 应用:能够快速的辨别出大型数据集重复变量之间的差异 组成: Y 轴以 p-value 为主进行转换 X 轴以 log2Fold Change 为主进行转换 # Clear workspace rm(list = ls()) # Load packages library(dplyr) library(ggplot2) library(ggrepel) # Read data from the local path-setwd(D:/Test/R/R_paint) results = read.table(volcano_test.txt, header=TRUE) results = mutate(results, sig=ifelse(results$padj0.05, p_value0.05, Not sig)) png(volcano.png,width=600,height=800) p = ggplot(results, aes(log2FoldChange, -log10(pvalue))) + geom_point(aes(col=sig)) + scale_color_manual(values=c(blue, red))+ labs(title = volcano)+ theme(plot.title = element_text(size = 16, hjust = 0.5, face = bold)) p #p+geom_text(data=filter(results, padj0.05), aes(label=Gene)) p+geom_text_repel(data=filter(results, padj0.05), aes(label=Gene)) dev.off() 参考: https://www.r-bloggers.com/repel-overlapping-text-labels-in-ggplot2/ https://github.com/slowkow/ggrepel/blob/master/vignettes/ggrepel.md https://en.wikipedia.org/wiki/Volcano_plot_(statistics) R Graphics Cookbook , Winston Chang ggplot2: Elegant Graphics for Data Analysis , Hadley Wickham http://docs.ggplot2.org/current/
个人分类: ggplot2|12 次阅读|0 个评论
ggplot2箱线图
Polya 2017-4-12 16:22
箱线图( Boxplot,Box-whisker Plot ) 组成:五个统计量:最小值,第一四分位数,中位数,第三四分位数,最大值 用途:描述数据的一种方法 粗略地看出数据是否具有有对称性,分布的分散程度等信息, 适用:特别可以用于对几个样本的比较。 绘制箱线图的步骤如下: 1 .画一只箱子,箱子两端分别位于第一个和第三个四分位数上。 2 .在箱子中位数的位置画一条垂直线。 3 .用四分位数全距 IQR = Q3 − Q1 ,确定限制线的位置。箱线图的上、下限制线分别在比 Q1 低 1.5(IQR) 和比 Q3 高 1.5(IQR) 的位置上。两条限制线以外的数据可以认为是异常值。 4 .图 1 中的虚线称为触须线。触须线从箱子两端开始绘制,直至第 3 步中计算的限制线内的最小值和最大值。 5 .最后,每个异常值的位置都用星号“ * ”表示出来。 概念: 第一四分位数 (Q1) : “较小四分位数”等于该样本中所有数值由小到大排列后第 25% 的数字。 第二四分位数 (Q2) : “中位数”,等于该样本中所有数值由小到大排列后第 50% 的数字。 第三四分位数 (Q3) : “较大四分位数”,等于该样本中所有数值由小到大排列后第 75% 的数字。 例如一队数列: 1 , 3 , 10, 16, 19, 20, 21, 22, 83, 87, 200 Q1=10 Q2=20 Q3=83 # Clear workspace rm(list = ls()) #set as your own path .R files. path-setwd(D:/Test/R/R_paint) library(ggplot2) # create fake dataset with additional attributes - sex, sample, and temperature x - data.frame( values = c(1, 3, 10, 16, 19, 20, 21, 25, 83, 87, 200), sex = rep(c('M', 'F'), each = 11), sample = rep(c('sample_A', 'sample_B'), each = 11) ) x png(plotbox_3.png,width = 600,height = 800) ggplot(x, aes(x = sample, y = values, fill = sex)) + geom_boxplot() dev.off() y - rnorm(100) y df - data.frame( x = 1, y0 = min(y), y25 = quantile(y, 0.25), y50 = median(y), y75 = quantile(y, 0.75), y100 = max(y) ) df$y0 df$y25 df$y50 df$y75 png(plotbox_4.png,width = 600,height = 800) ggplot(df, aes(x)) + geom_boxplot( aes(ymin = y0, lower = y25, middle = y50, upper = y75, ymax = y100), stat = identity ) dev.off() Q0=df$y0 Q1=df$y25 Q2=df$y50 Q3=df$y75 Q4=df$y100 geom_boxplot( mapping = NULL, data = NULL, stat = boxplot, position = dodge, ..., outlier.colour = NULL, outlier.color = NULL, outlier.fill = NULL, outlier.shape = 19, outlier.size = 1.5, o utlier.stroke = 0.5, outlier.alpha = NULL, notch = FALSE, notchwidth = 0.5, varwidth = FALSE, na.rm = FALSE, show.legend = NA, inherit.aes = TRUE) 以上为 geom_boxplot() 参数选择项 geom_boxplot(aes()) , aes() 中的参数选项: x lower upper Middle : ymin : 下限 ymax :上限 alpha colour fill group linetype shape size weight 使用方法:示例 aes (ymin = y0, lower = y25, middle = y50, upper = y75, ymax = y100), 参考资料: http://ggplot2.tidyverse.org/reference/geom_boxplot.html http://wiki.mbalib.com/wiki/%E7%AE%B1%E7%BA%BF%E5%9B%BE https://zh.wikipedia.org/wiki/%E5%9B%9B%E5%88%86%E4%BD%8D%E6%95%B0
个人分类: ggplot2|11 次阅读|0 个评论
ggplot2实现散点折线图
xbinbzy 2017-1-5 08:51
准备的数据: 第一列是时间,第二列是样本,第三列是具体数值。横轴标为时间,纵坐标为具体数值,图中不同颜色展示不同样本。 具体的代码: library(ggplot2) png(./xyz.png)(保存成png) ups-read.delim(xyz.csv)(读取数据) ups\$date - factor(ups\$date,levels(ups$date) )(横坐标调整) p-ggplot(data=ups,aes(x=date,y=value,group=sample)) + geom_line(aes(colour=sample)) + geom_point(size=6,aes(shape=sample,colour=sample)) + xlab()+ylab(Odd Ratio) dev.off() 最终的图形: ggplot2默认支持6个样本的画图,如果超出,需要用 scale_shape_manual来进行调整,例如 library(ggplot2) png(./xyz.png)(保存成png) ups-read.delim(xyz.csv)(读取数据) ups\$date - factor(ups\$date,levels(ups$date) )(横坐标调整) p-ggplot(data=ups,aes(x=date,y=value,group=sample)) + geom_line(aes(colour=sample)) + scale_shape_manual(values=c(0,1,2,3,4,5,6,7,8,9))+geom_point(size=6,aes(shape=sample,colour=sample)) + xlab()+ylab(Odd Ratio) dev.off() 图如下: 参考资料:http://rstudio-pubs-static.s3.amazonaws.com/796_a9237a230236427b8e71aeb72810cf4d.html
个人分类: R语言画图|29520 次阅读|0 个评论
R软件包ggplot2的安装
smileleaf 2015-4-22 11:17
论文写作需要使用ggplot2,尝试安装不成功。于是,上网搜索一番后,仍然无法正确安装。 静下心来,重新看了看安装时的错误提示。发现依存的环境没有设定好,需要plyr、reshape2以及scale软件包。 重新用rstadio安装plyr,仍然不成功。下载最新版源代码安装,显示plyr在R 3.1以上运行。原来问题出在这里,我的R版本是3.0.8!重新下载plyr旧版本,安装成功!如法炮制reshape2安装。scale可以在R3.0下安装!最后,ggplot2安装成功! 总结:1.有的R软件包更新过快,不适合旧版R。 2. 有的R软件包需要设定好依存环境,才能正确安装。
个人分类: R|18043 次阅读|0 个评论
[转载]Beautiful plotting in R: A ggplot2 cheatsheet
zhangdong 2014-10-7 15:06
source: http://zevross.com/blog/2014/08/04/beautiful-plotting-in-r-a-ggplot2-cheatsheet-3/ Beautiful plotting in R_ A ggplot2 cheatsheet _ Technical Tidbits From Spatial A.pdf
1916 次阅读|0 个评论
ggplot2中坐标网格和坐标文字字体和字号的调整
zhangdong 2014-7-24 23:23
pbsfig - qplot(raw.score, theta, data = pbs,geom=c(point,smooth),method = loess) ###下一行实现所需功能 pbsfig + theme(axis.text=element_text(size=16),axis.title=element_text(size=20,face=bold))
26633 次阅读|0 个评论
windows xp R 3.03 install ggplot2
xiangxing 2014-5-4 23:25
------------------------------------------------------------ 2014-04-26 13:29:17 下午 安装ggplot2失败记录(不喜欢的直接拉到底部看结论) ------------------------------------------------------------ #环境:windows XP + R 3.03 install.packages(ggplot2) --- 在此連線階段时请选用CRAN的鏡子 --- #选择的镜像是国内China(Beijing2) also installing the dependencies ‘colorspace’, ‘Rcpp’, ‘stringr’, ‘RColorBrewer’, ‘dichromat’, ‘munsell’, ‘labeling’, ‘plyr’, ‘digest’, ‘gtable’, ‘reshape2’, ‘scales’, ‘proto’ 试开URL’http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/3.0/colorspace_1.2-4.zip' Content type 'application/zip' length 384299 bytes (375 Kb) 打开了URL downloaded 375 Kb 试开URL’http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/3.0/Rcpp_0.11.1.zip' Content type 'application/zip' length 3009433 bytes (2.9 Mb) 打开了URL downloaded 4053 bytes 试开URL’http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/3.0/stringr_0.6.2.zip' Content type 'application/zip' length 75038 bytes (73 Kb) 打开了URL downloaded 73 Kb 试开URL’http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/3.0/RColorBrewer_1.0-5.zip' Content type 'application/zip' length 25286 bytes (24 Kb) 打开了URL downloaded 24 Kb 试开URL’http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/3.0/dichromat_2.0-0.zip' Content type 'application/zip' length 147536 bytes (144 Kb) 打开了URL downloaded 144 Kb 试开URL’http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/3.0/munsell_0.4.2.zip' Content type 'application/zip' length 126490 bytes (123 Kb) 打开了URL downloaded 123 Kb 试开URL’http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/3.0/labeling_0.2.zip' Content type 'application/zip' length 40403 bytes (39 Kb) 打开了URL downloaded 39 Kb 试开URL’http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/3.0/plyr_1.8.1.zip' Content type 'application/zip' length 1150878 bytes (1.1 Mb) 打开了URL downloaded 1.1 Mb 试开URL’http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/3.0/digest_0.6.4.zip' Content type 'application/zip' length 136446 bytes (133 Kb) 打开了URL downloaded 12 Kb 试开URL’http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/3.0/gtable_0.1.2.zip' Content type 'application/zip' length 63558 bytes (62 Kb) 打开了URL downloaded 62 Kb 试开URL’http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/3.0/reshape2_1.4.zip' Content type 'application/zip' length 500016 bytes (488 Kb) 打开了URL downloaded 488 Kb 试开URL’http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/3.0/scales_0.2.4.zip' Content type 'application/zip' length 150525 bytes (146 Kb) 打开了URL downloaded 146 Kb 试开URL’http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/3.0/proto_0.3-10.zip' Content type 'application/zip' length 458271 bytes (447 Kb) 打开了URL downloaded 122 Kb 试开URL’http://ftp.ctex.org/mirrors/CRAN/bin/windows/contrib/3.0/ggplot2_0.9.3.1.zip' Content type 'application/zip' length 2656714 bytes (2.5 Mb) 打开了URL downloaded 929 Kb 程序包‘colorspace’打开成功,MD5和检查也通过 错误于read.dcf(file.path(pkgname, DESCRIPTION), c(Package, Type)) : 无法打开链结 此外: 警告信息: 1: In download.file(url, destfile, method, mode = wb, ...) : 下载的长度4053不等于报告的长度3009433 2: In download.file(url, destfile, method, mode = wb, ...) : 下载的长度12694不等于报告的长度136446 3: In download.file(url, destfile, method, mode = wb, ...) : 下载的长度125015不等于报告的长度458271 4: In download.file(url, destfile, method, mode = wb, ...) : 下载的长度951573不等于报告的长度2656714 5: In unzip(zipname, exdir = dest) : 从zip文件中抽取1时出了错 6: In read.dcf(file.path(pkgname, DESCRIPTION), c(Package, Type)) : 无法打开压缩文件'Rcpp/DESCRIPTION',可能是因为'No such file or directory' -------------------------------------------------------------------------------- 悲剧结束!!!想想五一快到啦! -------------------------------------------------------------------------------- ============================================================ 2014-05-04 22:36:17 安装ggplot2成功记录 ============================================================ Welcome at Sun May 04 22:08:34 2014 #选择厦门大学信息与网络中心开源软件镜像服务China(Xiamen) #http://mirrors.xmu.edu.cn/ #欢迎使用厦门大学信息与网络中心开源软件镜像服务 install.packages(ggplot2) --- 在此連線階段时请选用CRAN的鏡子 --- also installing the dependencies ‘colorspace’, ‘Rcpp’, ‘munsell’, ‘labeling’, ‘plyr’, ‘reshape2’, ‘scales’, ‘proto’ 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/colorspace_1.2-4.zip' Content type 'application/zip' length 384262 bytes (375 Kb) 打开了URL downloaded 375 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/Rcpp_0.11.1.zip' Content type 'application/octet-stream' length 3009433 bytes (2.9 Mb) 打开了URL downloaded 2.9 Mb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/munsell_0.4.2.zip' Content type 'application/zip' length 126002 bytes (123 Kb) 打开了URL downloaded 123 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/labeling_0.2.zip' Content type 'application/zip' length 40403 bytes (39 Kb) 打开了URL downloaded 39 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/plyr_1.8.1.zip' Content type 'application/zip' length 1146073 bytes (1.1 Mb) 打开了URL downloaded 1.1 Mb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/reshape2_1.4.zip' Content type 'application/zip' length 500182 bytes (488 Kb) 打开了URL downloaded 488 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/scales_0.2.4.zip' Content type 'application/zip' length 150718 bytes (147 Kb) 打开了URL downloaded 147 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/proto_0.3-10.zip' Content type 'application/octet-stream' length 457971 bytes (447 Kb) 打开了URL downloaded 447 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/ggplot2_0.9.3.1.zip' Content type 'application/octet-stream' length 2657534 bytes (2.5 Mb) 打开了URL downloaded 2.5 Mb 程序包‘colorspace’打开成功,MD5和检查也通过 程序包‘Rcpp’打开成功,MD5和检查也通过 程序包‘munsell’打开成功,MD5和检查也通过 程序包‘labeling’打开成功,MD5和检查也通过 程序包‘plyr’打开成功,MD5和检查也通过 程序包‘reshape2’打开成功,MD5和检查也通过 程序包‘scales’打开成功,MD5和检查也通过 程序包‘proto’打开成功,MD5和检查也通过 程序包‘ggplot2’打开成功,MD5和检查也通过 下载的二进制程序包在 C:\Documents and Settings\Administrator\Local Settings\Temp\RtmpCEWHT4\downloaded_packages里 #全部复制备份 ============================================================ 开始使用又遇到事故-程辑包‘digest’是在R版本3.0.0之前建的:你得重新安装 ============================================================ #装载库文件 library(ggplot2) #装载库文件出现错误警告 Error : 程辑包‘digest’是在R版本3.0.0之前建的:你得重新安装 错误: ‘ggplot2’程辑包或名字空间载入失败 #搜索解决方案如下 ##清除以前的文件夹,特别是配置文件,还有安装2.x后,在线更新一下,选国内的镜像。 ##已经换回2.15.3……,连2.15.2 都不行…… ##install.packages(ggplot2,type='source') ##一个最简单粗暴的方法就是你的RGUI上的工具栏上有一个packages的选项,下拉菜单里有一个update packages, ##把已安装的包卸掉,再从CRAN上重新下载再加载就行了 ##你好,您提的方法好像都无法再R3.02中安装mvtnorm包,换成以前版本是可以的,但是这个包是一个计量包的附带包,那个计量包在以前版本无法安装,实在无法解决这个问题,能否请高手指点迷津,谢谢! ##更新R版本的话,一般这些包好像都还在的 ##update.packages() 选择镜像后,可以选择y来更新你想要更新的包。 ##如果是重新安装R版本,不知道原来有的包还在不,不在的话,只有重安了,可以将你所要安的包,全部赋予pkgs,pkgs=c(,,...) ##在R 2.15.3环境下,我试了一下,安装是正常的。 ##开始尝试 library(ggplot2) ##错误依旧 Error : 程辑包‘digest’是在R版本3.0.0之前建的:你得重新安装 错误: ‘ggplot2’程辑包或名字空间载入失败, ##更新 update.packages(ask='graphics',checkBuilt=TRUE) 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/boot_1.3-11.zip' Content type 'application/zip' length 587583 bytes (573 Kb) 打开了URL downloaded 573 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/class_7.3-10.zip' Content type 'application/zip' length 99786 bytes (97 Kb) 打开了URL downloaded 97 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/cluster_1.15.2.zip' Content type 'application/zip' length 511507 bytes (499 Kb) 打开了URL downloaded 499 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/digest_0.6.4.zip' Content type 'application/zip' length 136446 bytes (133 Kb) 打开了URL downloaded 133 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/foreign_0.8-61.zip' Content type 'application/zip' length 288417 bytes (281 Kb) 打开了URL downloaded 281 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/KernSmooth_2.23-12.zip' Content type 'application/zip' length 104992 bytes (102 Kb) 打开了URL downloaded 102 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/lattice_0.20-29.zip' Content type 'application/zip' length 726567 bytes (709 Kb) 打开了URL downloaded 709 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/MASS_7.3-32.zip' Content type 'application/zip' length 1086730 bytes (1.0 Mb) 打开了URL downloaded 1.0 Mb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/Matrix_1.1-3.zip' Content type 'application/zip' length 3568556 bytes (3.4 Mb) 打开了URL downloaded 3.4 Mb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/mgcv_1.7-29.zip' Content type 'application/zip' length 1601316 bytes (1.5 Mb) 打开了URL downloaded 1.5 Mb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/nlme_3.1-117.zip' Content type 'application/zip' length 2135164 bytes (2.0 Mb) 打开了URL downloaded 2.0 Mb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/nnet_7.3-8.zip' Content type 'application/zip' length 118787 bytes (116 Kb) 打开了URL downloaded 116 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/rpart_4.1-8.zip' Content type 'application/zip' length 918643 bytes (897 Kb) 打开了URL downloaded 897 Kb 试开URL’http://mirrors.xmu.edu.cn/CRAN/bin/windows/contrib/3.0/spatial_7.3-8.zip' Content type 'application/zip' length 150470 bytes (146 Kb) 打开了URL downloaded 146 Kb 程序包‘boot’打开成功,MD5和检查也通过 程序包‘class’打开成功,MD5和检查也通过 程序包‘cluster’打开成功,MD5和检查也通过 程序包‘digest’打开成功,MD5和检查也通过 程序包‘foreign’打开成功,MD5和检查也通过 程序包‘KernSmooth’打开成功,MD5和检查也通过 程序包‘lattice’打开成功,MD5和检查也通过 程序包‘MASS’打开成功,MD5和检查也通过 程序包‘Matrix’打开成功,MD5和检查也通过 程序包‘mgcv’打开成功,MD5和检查也通过 程序包‘nlme’打开成功,MD5和检查也通过 程序包‘nnet’打开成功,MD5和检查也通过 程序包‘rpart’打开成功,MD5和检查也通过 程序包‘spatial’打开成功,MD5和检查也通过 下载的二进制程序包在 C:\Documents and Settings\Administrator\Local Settings\Temp\RtmpCEWHT4\downloaded_packages里 #备份下 library(ggplot2) Error : 程辑包‘proto’是在R版本3.0.0之前建的:你得重新安装 错误: ‘ggplot2’程辑包或名字空间载入失败, ============================================================ 又遇到事故-程辑包‘proto’是在R版本3.0.0之前建的:你得重新安装 ============================================================ ##强制更新update.packages(proto)没啥反应 update.packages(proto) ##源文件安装包文件 install.packages(proto,type=source) 试开URL’http://mirrors.xmu.edu.cn/CRAN/src/contrib/proto_0.3-10.tar.gz' Content type 'application/x-gzip' length 530758 bytes (518 Kb) 打开了URL downloaded 518 Kb Welcome at Sun May 04 22:34:14 2014 * installing *source* package 'proto' ... ** 成功将'proto'程序包解包并MD5和检查 ** R ** demo ** inst ** preparing package for lazy loading ** help *** installing help indices ** building package indices ** installing vignettes 'proto.Rnw' 'protoref.Rnw' ** testing if installed package can be loaded Welcome at Sun May 04 22:34:16 2014 Goodnye at Sun May 04 22:34:16 2014 * DONE (proto) Goodnye at Sun May 04 22:34:17 2014 下载的程序包在 ‘C:\Documents and Settings\Administrator\Local Settings\Temp\RtmpCEWHT4\downloaded_packages’里 #备份 library(ggplot2) ##老大,终于没有错误了。 ## ggplot(yx) 错误: ggplot2 doesn't know how to deal with data of class numeric # #ggplot2只给dataframe面子 #ggplot(data=dat,aes(x=r_salary,y=r_sales))+geom_line() #ggplot example mydata - data.frame(x = -100:100) myfun - function(x) x^2 + x + 1 ggplot(data = mydata, aes(x = x)) + stat_function(fun = myfun, geom = point) #ggplot,散点图,用label在点上标注。但我想标注部分点,例如前10个,怎么做呢? 因为数据比较大,所有点都label,根本看不清标注带的内容。所以就想部分标注。 pointLabels - vector('character',length=nrow(mtcars)) pointLabels - rownames(mtcars) p - ggplot(mtcars, aes(x=wt, y=mpg, label=pointLabels, color=(pointLabels==))) p + geom_point() + geom_text(vjust=1.2) + theme(legend.position=none) ============================================================ #windows xp R 3.03 install ggplot2收工总结 01-选择镜像很重要 #选择厦门大学信息与网络中心开源软件镜像服务China(Xiamen) #http://mirrors.xmu.edu.cn/ 02-安装与装载检查 install.packages(ggplot2) library(ggplot2) 03-装载检查出错_更新 library(ggplot2)装载ggplot包时出现类似错误按照如下依次执行: e.g.程辑包‘digest’是在R版本3.0.0之前建的:你得重新安装 a.RGUI上的工具栏上有一个packages的选项,下拉菜单里有一个update packages,全部更新 b.全部更新之后,还是有个别需要重新安装的,使用源文件安装相应的包文件 e.g.程辑包‘proto’是在R版本3.0.0之前建的:你得重新安装 ##源文件安装包文件 install.packages(proto,type=source) 04-祝你享用ggplot愉快 ============================================================
个人分类: 数据生活|7913 次阅读|0 个评论
ggplot2 绘图包中一些参数
dugucan 2013-11-6 22:07
1. 五种位置调整参数 名称 描述 dodge 避免重叠 fill 堆叠图形元素并将高度标准化为 1 identity 不做任何调整 jitter 给点添加扰动避免重合 stack 将图形元素堆叠起来
个人分类: R 语言|2 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-12 16:10

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部