R语言可视化及作图6--ggplot2之点图、条形图、盒形图、直方图、线图R语言绘图系列:
标度控制着数据到图形属性的映射,标度将R语言画GO图我们的数据转化为视觉上可以感知的东西,比如大小、位置、颜色、形状等 。标度也为R语言画GO图我们提供R语言画GO图了读图时所使用的工具 , 比如说坐标轴和图例 。总的来说,可以称为引导元素 。标度函数控制元素的属性,可以理解为图形的遥控器,可以用它来调整画布大小、颜色等等 。此前学的shape,color,size等参数和标度函数相比显得不够灵活 。
scale_fill_brewer 调色板函数
geom_errorbar()
geom_crossbar()
geom_linerange() 绘制线段
geom_pointrange() 绘制点
pointrange:点画线
首先绘制一张盒形图
在图上显示出观测值
值得注意的是,图上点的多少并不能完全反应原始数据的多少 , 因为有的点可能因为点过于密集就会被覆盖,看起来是一个点 , 其实可能是多个点 。
因此可以使用geom_jitter函数将不同的点区分开(jitter是震荡散点),width设置如果遇到相同的点,点向左右方平移的距离 。alpha设置透明度 。
黑色点是离群点
还可以绘制卡槽图
varwidth参数会根据该水平下观测值的个数(n值)改变盒形图的宽度 。(这里宽度去的不是观测个数的绝对值 , 而是平方根,以缩小差距 。)
给盒子上色
分组盒形图,用不同颜色区分
画水平的盒形图
使用coord_flip函数(坐标轴翻转函数)
绘制一张直方图
bins可以设置直方图条柱的数目 , 默认为30 。当bins和binwidth(设置条柱宽度)同时设置时,默认以binwidth为准 。
新加入变量cut,根据新变量在price水平上进行一个计数
y轴由count变为density,绘制概率密度
注意下面density的写法,前后都要加..
绘制概率密度曲线:geom_density函数
堆栈密度概率曲线
geom_line/geom_path/geom_step
绘制一个简单的线图
绘制点线图,点和线需要分别添加 。
如上图,线在点之上,是因为先投射了点,又投射了线 。
先投射线,点就出现在了线之上 。
【R语言画GO图 r语言shiny画图】 线的颜色出现了渐变
geom_smooth函数:绘制拟合曲线
methods还有其他的方法,如glm:广义线性模型;losses:纯粹平滑;gam:广义加性模型等等(lm和glm最常用)
geom_hline绘制水平线 , geom_vline绘制垂直线 。xintercept和yintercept是截距,slope是斜率 。
R语言画图-条形图,堆叠条形图(ggplot2)1. barplot函数
a=matrix(1:18,2)
a
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,]1357911131517
[2,]24681012141618
class(a) #查看a数据类型
[1] "matrix"
注意barplot函数对象要么是向量,要么是矩阵,若不是,则要进行数据数据类型进行转换
barplot(d)#所有参数默认
?barplot
常见参数就不赘述了,几个个人认为比较重要参数如下
names.arg----在每个条形图或条形图下绘制的名称向量 。如果省略此参数,那么如果它是向量,则从height的names属性中获取名称;如果它是矩阵,则从列名称中获取名称 。
legend.text----数据为矩阵的时候用 , 如果legend.text为true,则height的行名称非空时将用作标签 。
horiz----默认false,为竖直条形图,改为TRUE,为水平条形图
beside---如果为FALSE , 则将高度列描绘为堆叠的条 , 如果为TRUE,则将列描绘为并列的条
space---每根柱子之前留出的空间量(以平均柱子宽度的一部分为单位) 。可以以单个数字或每个小节一个数字的形式给出 。如果height是一个矩阵,并且next为TRUE,则可以用两个数字指定空间,其中第一个是同一组中的条形之间的间隔,第二个是组之间的间隔 。如果未明确给出,则如果height为矩阵,并且next为TRUE,则默认为c(0,1) , 否则为0.2 。
还有很多参数可以通过help()查询
barplot(a,names.arg = c('1','2','3','4','5','6','7','8','9'),beside = TRUE,horiz = TRUE,col = rep(c('blue','green','gray'),3),legend.text = TRUE)
barplot(a,names.arg = c('1','2','3','4','5','6','7','8','9'),beside = F,horiz = TRUE,col = rep(c('blue','green'),2),legend.text = TRUE)
barplot(a,names.arg = c('1','2','3','4','5','6','7','8','9'),beside = F,horiz = F,col = rep(c('blue','green'),2),legend.text = TRUE)
2.ggplot2包
安装加载包
install.package('ggplot2')
library(ggplot2)
#创建矩阵
data-data.frame(Sample-c(rep('control1',3),rep('control2',3),rep('control3',3),rep('treat1',3),rep('treat2',3),rep('treat3',3),rep('treat4',3)), contion-rep(c('Cell','Tissue','Organ'),7), value-c(503,264,148,299,268,98,363,289,208,108,424,353,1,495,168,152,367,146,48,596,143))
colnames(data)=c('sample',"contion","value")
ggplot(data,mapping = aes(Sample,value,fill=contion)) geom_bar(stat='identity',position='fill')labs(x = 'Sample',y = 'frequnency')theme(axis.title =element_text(size = 16),axis.text =element_text(size = 14, color = 'black')) theme(axis.text.x = element_text(angle = 45, hjust = 1))
#ggplot函数,geom从数据到几何图像,geom_bar为柱状图 , geom_line为线型图等 , aes形成映射 , x轴为sample,y轴为value,堆叠为contion,geom_bar()函数为建立柱状图 , stat参数-统计变换,position参数为柱状图形式 , position= 'fill'(图形元素堆叠且高度标准化为1) , position= 'stack'(图形堆叠图),参数position= 'dodge'(并列数据,非堆叠展示) , coord画图在某个坐标系中,facet将绘图窗口分成若干子窗口用来生成数据中不同子集的图形
# labs为标题,theme为设置标题参数,axis.title为轴标题信息 , axis.text为轴注释文本,axis.text.x表示设置x轴的信息,还有更多参数详查ggplot2包
ggplot(data,mapping = aes(Sample,value,fill=contion)) geom_bar(stat='identity',position='fill')labs(x = 'Sample',y = 'frequnency')theme(axis.title =element_text(size = 16),axis.text =element_text(size = 14, color = 'black')) theme(axis.text.x = element_text(angle = 45, hjust = 1)) coord_flip() #加的函数可实现水平柱状图展示
ggplot(data,mapping = aes(Sample,value,fill=contion)) geom_bar(stat='identity',position='stack')labs(x = 'Sample',y = 'frequnency')theme(axis.title =element_text(size = 16),axis.text =element_text(size = 14, color = 'black')) theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplot(data,mapping = aes(Sample,value,fill=contion)) geom_bar(stat='identity',position='dodge')labs(x = 'Sample',y = 'frequnency')theme(axis.title =element_text(size = 16),axis.text =element_text(size = 14, color = 'black')) theme(axis.text.x = element_text(angle = 45, hjust = 1))
【R语言】解决GO富集分析绘图,标签重叠问题 前面我给大家详细介绍过
?GO简介及GO富集结果解读
?四种GO富集柱形图、气泡图解读
?GO富集分析四种风格展示结果—柱形图,气泡图
?KEGG富集分析—柱形图 , 气泡图,通路图
?DAVID GO和KEGG富集分析及结果可视化
也用视频给大家介绍过
?GO和KEGG富集分析视频讲解
最近有粉丝反映说,利用clusterProfiler这个包绘制GO富集分析气泡图和柱形图的时候,发现GO条目的名字都重叠在一起了 。
气泡图
柱形图
这个图别说美观了 , 简直不忍直视 。经过我的认真研究,发现跟R版本有关 。前面我给大家展示的基本都是R 3.6.3做出来的图 。很多粉丝可能用的都是最新版本的R 4.1.2 。
我们知道R的版本在不停的更新,相应的R包也在不停的更新 。我把绘制气泡图和柱形图相关的函数拿出来认真的研究了一下,终于发现的症结所在 。
dotplot这个函数,多了个 label_format 参数
我们来看看这个参数究竟是干什么用的,看看参数说明
label_format :
a numeric value sets wrap length, alternatively a custom function to format axis labels. by default wraps names longer that 30 characters
原来这个参数默认值是30,当标签的长度大于30个字符就会被折叠,用多行来展示 。既然问题找到了,我们就来调节一下这个参数,把他设置成100,让我们的标签可以一行展示 。
是不是还是原来的配方,还是熟悉的味道
同样的柱形图 , 我们也能让他恢复原来的容貌 。
关于如何使用R做GO和KEGG富集分析 , 可参考下文
GO和KEGG富集分析视频讲解
[R语言] GO富集分析可视化 GOplot::GOCircle 查看GOplot内示例数据R语言画GO图的格式R语言画GO图,对自己的数据做处理
观察结论R语言画GO图:
观察自己的两个数据表:
table.legend 设置为T时会显示表格
本图中表格和图例是出图后剪切拼合而成R语言画GO图,没有用R中的拼图包
R语言可视化及作图7--ggplot2之标签、图例和标题绘制 R语言绘图系列R语言画GO图:
使用geom_label绘制标签散点图
绘制点R语言画GO图,并通过nudge参数对标签进行x轴和y轴上的平移
使用angle参数对标签角度进行设置
geom_label可以使用fill对颜色进行填充,fontface设置字体,geom_text不能填充颜色
parse参数意思是前面传入的是一个数学表达式,size定义标签相对大小 。
画一个散点图
annotate函数传入标签
添加矩形
添加短线段
2.1 guide_legend函数(主要参数:color, shape, size)
图例调整函数也属于标度函数的一类 , 但不可以直接使用加号来连接,必须放在函数中,作为一个参数 。
guide_colorbar和guide_legend设置的是不同的图例,guide_colorbar定义色条图例 , guide_legend定义普通图例 。
2.2 标度函数scale
对于连续型变量,使用的参数是scale_xxx_continous(),对于分类型变量,使用的是scale_xxx_discrete() 。
2.3:theme函数
在theme函数中,与图例有关的主要参数有:
标题主要有五种:主标题 , 副标题,角注,x轴标签和y轴标签
ggtitle()只能定义标题和副标题 , 默认的位置在左上角 。
如何用R语言画图q1, 首先要确定是barplot还是hist,如果是barplot的话,应该不存在breaks的问题,因为barplot的传入参数是个矩阵;
我假设你要画的是个hist , 我偶遇过这个问题,我的理解是hist的breaks的值要能被范围整除才行;比如x=1:200,break=7的话,就只能画出4个柱来,但如果breaks=10就没问题;基本上是这样的,偶尔也有例外;比如break=5就不行....奇怪得很
最后 , 没办法的办法,就只能用barplot代替hist了,barplot肯定不会有这个问题,统计下hist参数中的分布情况,转换成矩阵,用barplot吧;
q2, 貌似一般都用一组因素把这些类别区分开,我用abcde,表示你的小学,中学...了,比如这样:
a=1:7;b=8:10;c=c(9,10,11);d=c(40,55);e=100:110f=factor(c(rep(1,sum(length(a),length(b),length(c))),rep(2,sum(length(d),length(e)))))#先用c()生成数组,在转换成factor,其实数组也ok的,不过plot()中两个数组和factor不一样 x=c(a,b,c,d,e)plot(x~f)q3, 就我所知不行;yes或no一定也要是能映射到x , y范围内的点才行;你是想表示分类结果吗?如果是的话,通常用颜色,或者在点旁边的text表示 。
q4, 举个例子吧
x=-50:50y=x^2 x 1z=10*abs(x) 1 plot(x,y,type='l')lines(x,z,lty=3)legend(c('type1','type2'), x=-20,y=2500, col=c('black','red'), lty=c(1,3))legend的x和y是legend的左上角,匿名参数是类型名称,col,lty,pch 是对应的颜色 , 线类型,和点类型 。
最后,我现在多用ggplot2 , 如果不抵触的话可以看看,和R的基础作图包思路不是很一样 , 但是图很清新的;
如果还有问题 , 建议把数据集data.frame粘贴几行上来,我也试试;
关于R语言画GO图和r语言shiny画图的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- gis软件上显示的是什么坐标系,gis一般用什么坐标系
- 不小心删除sqlserver2005,不小心删除微信群聊怎么恢复
- 经营类枪械游戏,武器经营类游戏
- 教你用好chatgpt,教你用好中成药
- python调用核函数 python调用ch
- erp系统管理软件哪个好用一点,好用的erp管理系统
- 美食产品如何营销,美食产品如何营销策划
- 推荐python视频教程的简单介绍
- mysql中怎么插表 mysql怎么在表中添加数据