前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jely's Note之生信入门class6

Jely's Note之生信入门class6

原创
作者头像
用户10556369
发布2023-05-17 22:06:58
6400
发布2023-05-17 22:06:58
举报
文章被收录于专栏:Jely’s生信笔记Jely’s生信笔记

Class 6

#本文引用自生信技能树

【知识拓展】

【1.当不确定自己输入的代码是否正确时,可以用attach()括号内填入你想使用的数据,这样当你想用a数据里面的某列名字时,可以直接用Tab打出他的名字并且不会出错

【2.当写代码时,大小写要保持一致,比如一部分要大写其他部分就一定要大写】

【打开文件的正确方式是在Rstudio的界面的右下角工作目录里面的文件】

【课堂内容】

一、画图的目的是展示自己的数据!

常用的可视化R包:

画图:base【随软件自动下载】、ggplot2(*很重要)、ggpubr(低配版ggplot2)

拼图:Par里的mfrow、grid.arrange、cowplot、customLayout、patchwork(*很重要)

导出:经典三段论、ggsave(*很重要)、eoffice-topptx【不建议点鼠标、建议写代码】

二、画图

1.基础包【了解】

· 高级绘图函数:【传递数据-出图】

Plot()多种图形、Hist()频率直方图

· 低级绘图函数:必须有现成的图,不可能直接传递数据出图,只是往上面添加东西。

(1)Plot()多种图形

plot(iris[,1],iris[,3],col = iris[,5])

做一个横坐标用iris第一列的数据,纵坐标用第三列的数据,颜色用第五列数据的图

> text(6.5,4, labels = 'hello')

横坐标为6.5,纵坐标为4,的点命名为hello

【提示:dev.off()  #关闭画板】

(2)ggplot2【非常完善且好用】【灰色背景的图,就是ggplot2默认的背景】

Eg.

library(ggplot2)

ggplot(data = iris)+geom_point(mapping = aes(x = Sepal.Length,

 y = Petal.Length,color = Species))

3.ggpubr 【好看、但不能满足所有需求】新手友好 ggplot2简化和美化

library(ggpubr)

ggscatter(iris, x="Sepal.Length", y="Petal.Length", color="Species")

三、详细ggplot2语法【展示自己的数据!可以,颜值调整、细节调整以后再查再学】

1.【最常用】入门级绘图模板:作图数据,横纵坐标

ggplot(data = iris-数据)+

  geom_point-图类型(mapping=aes映射(x = Sepal.Length, y = Petal.Length-x、y是多少))

x和y的值是变量、带括号的是函数

Eg.ggplot(data = iris)+ geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length))

【ggplot2的特殊语法:列名不带引号,行末写加号】

2. 手动设置属性-颜色、大小、透明度、点的形状、线型

颜色:手动设置【与数据本身无关、人工】--需要写有意义的值

Color:字符串如“blue”、“red”

大小:单位如mm

形状:数字编号表示【有25个数字对应的形状】

Eg. ggplot(data = iris) +

+   geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length),

+              color="blue",   #颜色为蓝色

+              size = 5,     # 点的大小5mm

+              alpha = 0.5,  # 透明度 50%

+              shape = 8)  # 点的形状

3.映射

作用:按照数据框的某一列来定义图的某个属性

ggplot(data = iris)+geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length,

                           color = Species))-----代表aes的参数,是列名

【color = Species图的颜色按species中的数字来分配,同种类的同个颜色】

映射—与数据有关是aes,根据数据的某一列的内容分配颜色【自动分配颜色,修改颜色】】

比较:映射与手动设置【手动---与数据内容无关,与第几个点有关系,易出错】

ggplot(data = iris)+geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length),

color = "blue")---geom_point的参数,是具体颜色

【代码差别:color=“blue”/colnames【字符串是geom_point的参数是具体的颜色/是列名与aes的参数与数据有关】

4. 能不能自行指定映射的具体颜色?

ggplot(data = iris)+ geom_point(mapping = aes(x = Sepal.Length,y = Petal.Length,

color = Species))+-----必须有,加号不能忘

scale_color_manual(values = c("blue","grey","red"))

↑自行规定映射颜色,数据中就三种类型, 所以只赋值三种颜色

【想要什么颜色就有什么颜色,具体要按投稿杂志喜好】

5. 区分color和fill两个属性

都是颜色,但用法不同

需要看设置颜色的形状

1)空心形状和实心形状都用color设置颜色

#实心的例子--一种颜色

ggplot(data = iris)+

  geom_point(mapping = aes(x = Sepal.Length,

                           y = Petal.Length,

                           color = Species),shape = 17) #点的类型是17号,

#空心的例子----外框color颜色、内芯颜色

ggplot(data = iris)+

  geom_point(mapping = aes(x = Sepal.Length,

                           y = Petal.Length,

                           color = Species),shape = 2)

#既有边框又有内芯,才需要color和fill两个参数

#双色的例子----外框color颜色、内芯fill颜色

ggplot(data = iris)+

  geom_point(mapping = aes(x = Sepal.Length,

                           y = Petal.Length,

                           color = Species),  shape = 24,  fill = "black")

6.分面:把一张图分成多张子图facet_wrap(~ Species)

Species有三个取值,可分为三张图

ggplot(data = iris) + geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) +

facet_wrap(~ Species) ----根据其中一列来分面

species有三种品种,分三张图

7. 双分面facet_grid(Group ~ Species)

Dat = iris

dat$Group = sample(letters[1:5],150,replace = T)原表中没有的列名,用$可代表新增一列!

从letter里面取3个数据,随机取出!---随机取样函数!

Sample函数

Letters[1:5]:a,b,c,d,e

Sample(Letters[1:5],3)不能超出总体还要大的参数

当replace=F-不放回的取样,就可以满足超出总体的参数

Sample(Letters[1:5],3, replace=T)-----可以运行

【不要修改内置数据,因为你会忘记改过它】

【只要发现改过它】

+ggplot(data = dat) +

  geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) +

facet_grid(Group ~ Species)

8. .几何对象!=图层!

趋势线图、几何图!

在点图上叠加!用加号叠加函数!

ggplot(data = iris) +

  geom_smooth(mapping = aes(x = Sepal.Length,

                          y = Petal.Length))+

  geom_point(mapping = aes(x = Sepal.Length,

                           y = Petal.Length))

【局部】

简化版【当aes的x与y相同可都放在ggplot】

ggplot(data = iris,mapping = aes(x = Sepal.Length, y = Petal.Length))----【全局】

+geom_smooth()+

  geom_point()

相同的部分可以放在全局的ggplot函数中,不相同的部分可以放在各自局部的函数中

没有不一致的地方,可空着

【局部与全局的区别,局部设置只对当前图层有效;全局设置,对所有图层有效】

9. .波浪号连接!

10统计变化:

Diamond是内置数据,---用柱状图统计一列有多少取值,出现多少次

可用table统计

1)如果要画出柱状图:有两个函数可以使用

View(diamonds)

table(diamonds$cut)

· ggplot(data = diamonds) +

geom_bar(mapping = aes(x = cut))自动统计y

· ggplot(data = diamonds) +

stat_count(mapping = aes(x = cut))

2)使用:使用表中数据直接作图,而不统计

【已经有x、y,不统计,数据直接做图】

fre = as.data.frame(table(diamonds$cut))

ggplot(data = fre) +

  geom_bar(mapping = aes(x = Var1, y = Freq), stat = "identity"-实际的参数,允许你使用自己的横纵坐标)

3)使用:不统计count,统计prop(比例)

ggplot(data = diamonds) +

  geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1--比例的计算作为一个整体))

11.位置关系

1)抖动的点图geom_jitter()

ggplot(data = iris,mapping = aes(x = Species,

                            y = Sepal.Width,

                           fill = Species)) + geom_boxplot()

+  geom_jitter()---抖动的点的函数,带有随机性,相当于geom_ponit

2)堆叠直方图

堆叠式直方图

ggplot(data = diamonds) +

geom_bar(mapping = aes(x = cut,fill=clarity))

并列式直方图position="dodge"

ggplot(data = diamonds) +

  geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")改变位置关系

12.坐标系

1)#翻转坐标系coord_flip()---变成横行的坐标

ggplot(data = mpg, mapping = aes(x = class, y = hwy)) +

geom_boxplot() +

coord_flip()

2)极坐标系coord_polar()---以扇形的表示、饼图

bar <- ggplot(data = diamonds) +

  geom_bar( mapping = aes(x = cut, fill = cut), width = 1 ) +

  theme(aspect.ratio = 1) +

  labs(x = NULL, y = NULL)

bar + coord_polar()

三、ggpubr.R

赋值p <-  ggboxplot(iris, x = "Species", y = "Sepal.Length",color = "Species", shape = "Species",

 add = "jitter")抖动的点图

计算p值【两两比较】comparisons

my_comparisons <- list( c("setosa", "versicolor"),

c("setosa", "virginica"),

c("versicolor", "virginica") )

# Add pairwise comparisons p-value

p + stat_compare_means(comparisons = my_comparisons)+

stat_compare_means(label.y = 9) 【加上总体p值】

四、图片的保存及导出

#1.基础包作图的保存【三段论】

pdf("iris_box_ggpubr.pdf")

boxplot(iris[,1]~iris[,5])

text(6.5,4, labels = 'hello')

dev.off()

#2.ggplot系列图(包括ggpubr)通用的简便保存 ggsave

p <- ggboxplot(iris, x = "Species",

y = "Sepal.Length",

color = "Species",

shape = "Species",

add = "jitter")

ggsave(p,filename = "iris_box_ggpubr.png")

#3.eoffice包 导出为ppt,全部元素都是可编辑模式

library(eoffice)

topptx(p,"iris_box_ggpubr.pptx")

五、拼图

R包patchwork

当代码可运行却不出图--因为画板被占用

Dev.off()----关闭画板

Null device1----已经关闭画板

Dev.new()-----新建画板

重新运行出图代码,直到出图为止

六、去哪找现成的画图代码

Rgallary

STHDA

人工调整横坐标顺序

画图代码+你的数据+解决问题的能力=你的图

画图的正确思维=可化为己用

1. 我的数据适合用什么图展示z

2. 搜索画图代码

代码可复制,图片美观

提供了代码配套的示例数据

示例代码+示例数据是兼容的

3. 仿制示例数据

数据类型、结构

组织方式、对应关系

4. 套代码,调整细节

【练习题:

1.加载test.Rdata,分别test的以a和b列作为横纵坐标,change列映射颜色,画点图。

load("test.Rdata")

ggplot(data=test)+geom_point(mapping = aes(x=a,y=b,color=change))

2.尝试修改点的颜色为暗绿色(darkgreen)、灰色、红色

ggplot(data=test)+geom_point(mapping = aes(x=a,y=b,color=change))+scale_color_manual(values=c("darkgreen","grey","red"))

修改颜色的顺序可以:c("red ","grey"," darkgreen ")

【R语言里面的足够使用的颜色R包】

Library(paletteer)

Library(Rcolorbrewer)

2.箱线图【有离群值,点是属于箱线图】

ggplot(data = iris,mapping = aes(x=Species,y =Sepal.Length,Color =Species))

+geom_boxplot()

ggplot(data = iris,mapping = aes(x=Species,y=Sepal.Length,fill=Species))

+geom_boxplot()

2. 画叠加图的时候:函数的关系是先写先放

ggplot( iris,aes(Sepal.Width,Species))+

geom_point()+

geom_violin()+

geom_boxplot()

geom_violin()+

geom_boxplot()+

geom_point()

geom_violin()+

geom_boxplot()+

geom_jitter()

ggplot( iris,aes(Sepal.Width,Species))+

geom_violin(mapping = aes(fill=Species))+----- 需要加入映射

geom_boxplot()+

geom_jitter(aes(shape=Species))+ ---将点的形状改变,需要用到映射

theme_classic()---去掉灰色界面

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档