ggplot2一页多图排版的简便方法

几何对象可以简单分为个体几何对象和总体几何对象。 个体几何对象 对数据框的每一行数据绘制一个可以区别于其他个体的图形对象。例如,散点图中每个点代表一个观测。 群组几何对象 则用来表示多个观测。这可能是统计摘要的结果,如箱线图,也可能是几何图形的基础展示,如多边形图。折线图和路径图同时具备两种特点:每条线由一系列线段组成,但每条线段代表两个点。我们如何分配并控制观察到图形元素?这是 group 图形属性的工作。

要想在同一页面上排列多个ggplot2图形,基本的R函数 par() 和 layout() 是无效的。解决方案之一是使用 gridExtra 包中的一些函数来排版多个图形:

r语言ggplot2作图_r中ggplot2r语言ggplot2作图_r中ggplot2


r语言ggplot2作图_r中ggplot2


但是,这几个函数并不能按照图形轴线排列整齐,只能是按图形原样依次排列(如下图所示)。如果想多个图按照轴线对齐排列,可以使用 cowplot 包中的 plot_grid() 函数。但是,cowplot 包并不包含在多个页面排列多个图形的功能。因此,解决方案就是使用ggpubr包中的 ggarrange() 函数来实现该功能,此外,该函数还可以为多个图形创建统一的图例。

ggpubr包的安装可以参考这篇文章-->> ggpubr:快速绘制用于发表的图形 。

绘制4个不同的图形:

绘制箱线图和点图:

绘制条形图和散点图:

使用ggpubr包中的 ggarrange() 函数来排版多个图形:

或者,也可以使用cowplot包中的plot_grid()函数:

或者,也可以使用gridExtra包中的 grid.arrange() 函数:

使用 annotate_figure() 函数:

例如,当需要将风险表放在生存曲线下方时,便需要将两个图形的绘图区对齐。

ggsurv 是一个包含以下两个部分的列表:

绘制生存曲线和风险表:

对齐纵坐标轴:

使用嵌套的ggarrange() 函数:

使用函数ggdraw() + draw_plot() + draw_plot_label()可以将图形放置在特定位置。

用 ggdraw() 函数创建一个空画布:

画布中的坐标位置:

draw_plot_label() ,在图的左上角添加图标签:

排版多个图形:

使用 arrangeGrop() 函数可以修改图形的行列跨度:

可以使用grid 包中的 grid.layout() 函数来创建复杂的布局。另外,它还提供了函数 viewport() 来定义布局上的区域或视图。函数 print() 用于将图放置在指定区域中。

一般步骤如下:

首先绘制下面几个图形:

使用 ggarrange() 函数进行排版。

ggplot2中的 annotation_custom() 函数可用于在ggplot的绘图区域内添加表,图形或其他基于网格的元素。其基本格式为:

导入背景图。 根据背景图的格式,可以使用jpeg 包中的函数 readJPEG() 或png包中的函数 readPNG() 。

将ggplot与背景图合并:

使用alpha参数修改箱线图的对比group和color透明度:

将法国地图作为另一个图形的背景图:

如果图形数量很多,就需要将其放置在多个页面上了,而 ggarrange() 函数便可以实现这种功能。当指定了 nrow 和 ncol 之后, ggarrange() 函数便可以自动计算排版所有图形所需的页数。

也可以使用 ggexport() 函数到处为文件:

PDF file: multi.page.ggplot2.pdf

也可以使用 marrangeGrob() 函数实现多页输出。

使用函数 ggexport() 。

首先绘制四个图形:

然后,可以将单个图形导出到文件(pdf,eps或png),导出时还可以进行排版。

将单个图导出到pdf文件(每页一个图):

排版并导出:aesthetic map variables in data to graphic properties. mappings control the relationship between data and graphic properties.

“对称散点图”的绘制(R语言)

head(df)

转录组分析中,计算了两组间异表达的基因后,通常怎样表示?您可能时间想到可以使用火山图。的确,火山图是使用频率最多的,在火山图中可以很轻松地根据基因在两组间的Fold Change值以及显著性p值,识别和判断异表达基因概况。火山图实质上就是一种散点图,通常横纵坐标分别代表了log2转化后的Fold Change以及-log10转化后的p值或p调整值信息(下图左)。提到散点图,常见的还有另一种展示异表达基因的样式:横纵坐标轴可分别代表两组基因表达均值,这种风格可以更方便直观对比基因在两组中的异状态。

数据:ToothGrowth 和mtcars数据集。

本篇教程就让我们来学习如何绘制右图这种“对称散点图”,展示组间异基因表达格局。11

示例文件“gene_diff.txt”是一组基因异表达分析结果,记录了处理组(treat)和对照组(control)间表达显著不一致的基因,鉴定标准为p<0.01以及|log2 Fold Change|≥1。

其中,gene_id为基因名称;control和treat代表了两组中基因的平均表达值;log2FoldChange即log2转化后的基因表达异倍数;pvalue是异基因显著性p值;diff为根据p<0.01以及|log2 Fold Change|≥1筛选的异基因,该列中“up”为上调,“down”为下调,“none”为非异基因。

接下来通过该示例文件,展示使用R语言绘制异基因表达“对称散点图”过程。

首先对数据做一些预处理。

例如,基因表达值数量级相过大,取个对数转换;基因名称按是否为异基因作个排序,避免后续作图时被不显著的基因点遮盖,即排序的目的是让这些显著基因的点都位于图的上方。

下来就可以使用预处理后的数据作图了。

种类型是将基因按上调、下调或不显著类型着色,便于从图中辨认异基因。我们使用ggplot2的方法绘制异基因散点图。

两个坐标轴分别代表了处理组(treat)和对照组(control),图中的点代表各基因在两组中的平均表达值(已经作了log转换)。treat组和control组相比,上调基因以红色表示,下调基因以绿色表示。图中的虚线代表了|log2FC|=1时的阈值线。

上图中没有将p值信息展示出。因此另一种思路是,颜色代表p值,这样就可以在图中获得一个渐变梯度。同样使用ggplot2的方法绘制,和上述过程相比仅在颜色指定上存在区别。

类似上图,两个坐标轴分别代表了处理组(treat)和对照组(control),图中的点代表各基因在两组中的平均表达值(已经作了log转换),图中的虚线代表了|log2FC|=1时的阈值线。

和上图不同点在于,此时基因按显著性p值着色,从不显著>显著展示以蓝色>红色渐变,就获得了一种梯度信息。这样可以很方便地看出,在两组中的表达值异越大的基因,p值越小,二者趋势是一致的,重在描述了异倍数和p值的关系。

r语言怎么做一个三个种源,每个种源2个季节,每个季节四个物候天数的堆叠柱形?

调整legend的位置。

要创建一个具有三个种源、每个种源有两个季节、每个季节有四个物候天数的堆叠柱形图,您可以使用R语言中的ggplot2包。以下是一个示例代码在该图中,我们可以很轻松地观察异基因整体分布状态和数量比较的信息。:

R# 加载必要的包

library(ggplot2)

# 创建数据框

data <- data.frame(

source = rep(c("Source1", "Source2", "Source3"), each = 2 4),

season = rep(c("Spring", "Summer"), times = 3 4),

phenophase = rep(c("E1", "E2", "E3", "E4"), times = 3),

)# 创建堆叠柱形图

ggplot(data, aes(x = season, y = value, fill = phenophase)) +

geom_bar(ition = "stack") +

facet_wrap(~source) +

labs(x = "Season", y = "Value", fill = "Phenophase",) +

theme_minimal()

在这个示例中,我们首先加载了ggplot2包。然后,我们创建了一个包含三个种源、每个种源有两个季节、每个季节有四个物候天数的数据框。每个变量都是随机生成的,您可以根据实际数据进行替换。

然后,我们使用geom_bar()函数添加了柱形图层,并使用ition = "stack"参数指定了堆叠柱形图的布局。

接stringr:处理字符串下来,我们使用facet_wrap()函数通过~source将图形分为三个面板,每个面板显示一个种源的数据。

运行代码后,您将获得一个包含三个种源、每个种源有两个季节、每个季节有四个物候天数的堆叠柱形图。您可以根据需要修改代码以适应您的数据和分析需求。

1.ggplot2——

ggplot2 是一个用来绘制统计图形或数据图形的 R 包。与大多数其他图形软件包不同,ggplot2 具有基于图形语法的底层语法构建,它允许您通过组合不同的组件来组合图形。这使得 ggplot2 作图功能非常的强大。您可以针对您的特定问题而绘制想要展现的图形,而不仅仅局限于一组预定义的图形。

ggplot2 提供了漂亮、轻松的绘图,可以处理繁琐的细节,例如绘制图例。事实上,其精心选择的默认设置意味着您可以在几秒钟内制作出出版质量的图形。但是,如果您确实有特殊的格式要求,ggplot2 的综合主题系统可以让您轻松完成所需的工作。最终,这意味着与其花时间让图表看起来漂亮,不如专注于创建最能揭示数据中信息的图表。

学习语法不仅可以帮助您创建熟悉的图形,还可以启发你创作出更佳的方案。没有语法,就没有基础理论,因此大多数图形包是各种情况的组合。例如,在R的基础包中,如果您设计一个新图形,它由原始绘图元素(如线和点)组成,因此很难设计与现有绘图相结合的新组件。在 ggplot2 中,用于创建新图形的表达式由更高级别的元素组成,例如原始数据和统计转换的表示,可以轻松地与新数据集和其他绘图组合。

Wilkinson创建了图形语法来描述构成所有统计图形基础的基本特征。该语法回答了“什么是统计图形”这一问题。ggplot22建立在威尔金森语法的基础上,专注于层的首要地位,并将其用于R中。简而言之,语法告诉我们,图形将数据映射到几何对象(geom 点、线、条)的图形属性(aes 颜色、形状、大小)。plot也可能包括关于plot坐标系统的数据和信息的统计转换。分面(facet )可用于绘制数据的不同子集。这些组件的组合构成了一个图形。

所有绘图均由 数据 、可视化的信息和 映射 (数据变量如何映射到图形属性的描述)组成。有五个映射组件在此博客上已经讲的非常详细,直接引用。:

同样重要的是要注意语法不做的事情:

在使用之前,请安装好以下软件:

如果你想更加深入的了解 ggplot2 语法的元素以及它们如何组合在一起,在图形属性映射到连续变量时,这些问题最为相关。对于离散变量,ggplot2 的默认行为是将变量视为组美学的一部分,如上所述。这具有将群体几何对象 分成更小的部分的效果。这对于条形图和面积图特别有效,因为堆叠各个部分会产生与原始未分组数据相同的形状:可以参阅以下文档。

有关 ggplot2 函数及其参数的详细细节可以在线访问, ,并使用 R 中帮助(?...)访问。在线文档的优点是您可以查看所有示例图并更轻松地切换。

如果您经常使用 ggplot2,注册 ggplot2 邮件列表 。该列表的流量相对较低,对新用户非常友好。另一个有用的资源是 stackoverflow, 。stackoverf,我们使用labs()函数添加了图形的标题和轴标签,并使用theme_minimal()函数设置了简约主题。low 上有一个ggplot2 社区,很多常见的问题已经有人提出并解决了。

ggplot2 中的函数数量可能非常多,但 RStudio 提供了一些很棒的目录,可以在 上快速记忆。

参考文献

R语言自选数据完成图形绘制,要求: 1.图形中至少包含两条曲线; 2.图形设计中包?

[2]Hoyles,Lesleyetal.“Molecularphenomicsandmetagenomicsofhepaticsteatosisinnon-diabeticobesewomen.”Naturemedicinevol.24,7(2018):1070-1080.doi:10.1038/s415-018-0061-3

用ggplot作图即可,代码你自己选择

绘图首先需要数据。通过生成一堆的向量,转换为矩阵,得到想要的数据。

library(ggplot2)

ggplot(a)+geom_boxplot(aes(x1,y,col=x1/x2))箱线图

ggplot(a)+geom_point(aes(x1,y,col=x1/x2),ition=ition_jitter(width=0.04))散点图

1+geom_point(aes(x1,y,col=x1/x2),stat='summary',fun='sum'/'mean')+散点

2+geom_line(aes(x1,y,group=1/x2,col=x1/x2),stat='summary',fun='sum'/'mean')+折线

3+geom_errorbar(aes(x=x1,ymin=y-se,ymax=y+se,col=x1/x2),ition=ition_dodge(0.9),width=0.2)+误棒

ggplot(a,aes(x1,y,fill/col=x1/x2))+geom_bar(ition='dodge',stat='summary',fun='sum'/'mean')+geom_errorbar(aes(ymin=y-se,ymax=y+se),ition=ition_dodge(0.9),width=0.2)+geom_text(aes(label=marker),ition=ition_dodge(0.9),vjust=-2)条形图+误棒+显著字母(坐标写一次即可)

ggplot(a,aes(x1,y,col=x1/x2))+geom_point(ition=ition_jitter(width=0.04),stat='summary',fun='sum'/'mean')+geom_line(aes(group=1/x2),stat='summary',fun='sum'/'mean')+geom_errorbar(aes(ymin=y-se,ymax=y+se),ition=ition_dodge(0.9),width=0.2)+geom_text(aes(label=marker),ition=ition_dodge(0.9),vjust=-2)散点图+折线+误棒+显著字母(坐标写一次即可)

+geom_density(aes(y=liqi))密度图(1个数值型)

+geom_area(aes(x=tan,y=liqi))区域图(2个数值型)

+geom_ooth(aes(x=tan,y=liqi,group/col=chong),formula=y~x,met注:group = 1 将所有的数据看作一组,如果不设置,所有的 bar 将是等高的hod='lm',se=F)拟合图,分组/线条颜色(2个数值型)

+facet_wrap(~riqi,ncol/nrow=2,labeller='label_both/value')分面图,每行或每列分面数,分面标题

+xlab('自变量1(单位)')+ylab('因变量(单位)')+scale_fill_discrete(name='自变量2')更改轴和图例名称+coord_cartesian(ylim= c(0,80))限定轴范围

(fill=x1/x2,有此即可变色)+scale_fill_manual(values = c('grey70', 'grey50', 'grey30'))改变条形填充颜色(颜色数量=分组数量)

(col=x1/x2,有此即可变色)+scale_color_manual(values = c('red', 'orange', 'yellow'))改变颜色(颜色数量=分组数量)

怎么用R软件绘制频率分布直方图?

频率直方图是数据统计中经常会用到的图形展示方式,同时在生物学分析中可以更好的展示表型性状的数据分布类型;R基础做图中的hist函数对单一数据的展示很方便,但是当遇到多组数据的时候就不如ggplot2绘制来的方便。

1.基础做图hist函数

1.1多图展示

par(mfrow=c(2,3))

for(iin1:6){hist(rnorm(200),border='yellow',col='blue',main='',xlab='')}

2.ggplot2绘制

构造一组正态分布的数据

PH<-data.frame(rnorm(300,75,5))

names(PH)<-c('PH')

#显示数据

##PH

##172.64837

##267.10888

##389.34927

##475.70969

##682.85354

56

78

0

56

78

0

加载ggplot2作图包并绘图

library(ggplot2)

library(grTo display multiple geoms in the same plot , add multiple geom functions to ggplot():idExtra)

p1<-ggplot(data=PH,aes(PH))

geom_histogram(color='white',fill='gray60')#控制颜色

ylab(label='totalnumber')#修改Y轴标签

2.1修改柱子之间的距离

p2<-ggplot(data=PH,aes(PH))

geom_histogram(color='white',fill='gray60',binwidth=3)

2.2添加拟合曲线

p3<-ggplot(data=PH,aes(PH,..density..))

geom_histogram(color='white',fill='gray60',binwidth=3)

geom_line(stat='density')

2.3修改线条的粗细

p4<-ggplot(data=PH,aes(PH,..density..))

geom_histogram(color='white',fill='gray60',binwidth=3)

geom_line(stat='density',size=1.5)

grid.arrange(p1,p2,p3,p4)

31

23

2.4绘制密度曲线

p1<-ggplot(data=PH,aes(PH,..density..))

geom_density(size=1.5)

2.5修改线条样式

p2<-ggplot(data=PH,aes(PH,..density..))

geom_density(size=1.5,linetype=2)

p3<-ggplot(data=PH,aes(PH,..density..))

geom_density(size=1.5,linetype=5)

31

23

2.6修改颜色

p4<-ggplot(data=PH,aes(PH,..density..))

grid.arrange(p1,p2,p3,p4)

2.7多组数据展示

构造两组数据

df6347<-data.frame(c(rnorm(200,5000,200),rnorm(200,5000,600)),rep(c('BJ','TJ'),each=200))

names(df)<-c('salary','city')

结果展示

library(ggplot2)

p1<-ggplot()

geom_histogram(data=df,aes(salary,..density..,fill=city),color='white')

p2<-ggplot()

geom_histogram(data=df,aes(salary,..density..,fill=city),color='white',alpha=.5)

p3<-ggplot()

geom_density(data=df,aes(salary,..density..,color=city))

p4<-ggplot()

geom_histogram(data=df,aes(salary,..density..,fill=city),color='white')geom_density(data=df,aes(salary,..density..,color=city))

grid.arrange(p1,p2,p3,p4)

56

78

23

45

89

ggplot2绘图时可以添加回归线与回归方程吗

12

给你一个示例的example;如何添加线性回归线以及线性回归方程:

The following arguments are common to most scales in ggplot2:

libray(ggplot2)

df <- data.frame(x = c(1:100))

df$y <- 2 + 3 df$x + rnorm(100, sd = 40)

p <- ggplot(data = df, aes(x = x, y = y)) +

geom_ooth(metscale_x_continuous(breaks = seq(-180, 180, by = 30), labels = seq(-180, 180, by = 30)) +hod = "lm", se=FALSE, color="black", formula = y ~ x) +

geom_point()

lm_eqn <- function(df){

m <- lm(y ~ x, df);

eq <- substitute(italic(y) == a + b %.% italic(x)","~~italic(r)^2~"="~r2,

b = format(coef(m)[2], digits = 2),

r2 = format(summary(m)$r.squared, digits = 3)))

as.character(as.expression(eq));

}效果大致是这样的:

如何使用R语言的ggplot2包画气泡图

无监督的聚类属于热图的可视化的一个重要组成部分。

ggplot2:不用说,画图神器

reshape2:变形,整合

l12ubridate:处理时间

RODBC:链接数据库

plyr:拆分,合并,重组。

knitr:谢益辉,自动化报告包

ggmap:ggplot2+map的一个包,主要用来画地图,但是ggplot2的功能也都有

ani以上变量的含义:mation:谢益辉,动画包

formatR:谢益辉,整理代码的包

googleVis:利用google的API,可以生成动态气泡图之类

data.table:大的数据,用它取子集等,不怎么会。

【R语言】给富集分析的气泡图加个好看的配色

X。一般要尽量避免行或列名字以

写在前面

ggplot2是一款风靡全球的绘图R包,可惜的是,我对它的理解只能到入门的水平,本着在实战中学习的理念,我就搜索一下往后可能用得到的图,进行揣摩和优化,然后我发现了一个师兄的公众号,遂跟着这个师兄学习R绘图。公众号在文末。

这当然无法达到我们发文章的要求,需要对其进行美化一下。

美化后的效}else{果:

对上述几个参数进行解读:

参考链接:

1.绘图

3.grDevs documentation:

离散型变量系列:

配色确实有那味了,但是没想到内置的颜色不够用,可能通路少一点会好。

连续型变量系列:

34然后我发现,不管添不添加配色,都是和默认的配色保持一致,目前猜测可能是颜色不够导致的。

后记2

1.ggsci

2.