8. R语言画:散点图、直方图、条形图、箱线图、小提琴图、韦恩图

b站课程视频链接:
https://www.bilibili.com/video/BV19x411X7C6?p=1
腾讯课堂(最新,但是要花钱,我花99😢😢元买了,感觉讲的没问题,就是知识点结构有点乱,有点废话):
https://ke.qq.com/course/3707827#term_id=103855009
 
本笔记前面的笔记参照b站视频,【后面所有画图笔记】参考了付费视频
笔记顺序做了些调整【个人感觉逻辑顺畅】,并删掉一些不重要的内容,以及补充了个人理解
系列笔记目录【持续更新】:https://blog.csdn.net/weixin_42214698/category_11393896.html
🔥🔥🔥总结不易,还望各位友友,多多支持&&点赞🙏🙏你的鼓励是我更新的动力!

画出来的pdf图,可以用Adobe Acrobat进行微调,或者用ps

1. 散点图(两维数据):plot

在这里插入图片描述
代码:

m <- read.table("prok_representative.csv",sep = ",",header = T);  
x <- m[,2]
y <- m[,4]  

# 画黑色的点
plot(x,y,pch=16,xlab="Genome Size",ylab="Genes");  

# --------------画蓝色的直线--------------
fit <- lm(y~x);  
abline( fit,col="blue",lwd=1.8 );  

# 依次计算R^2、截距、斜率  用round保留两位小数
rr <- round( summary(fit)$adj.r.squared,2);  
intercept <- round( summary(fit)$coefficients[1],2);  
slope <- round( summary(fit)$coefficients[2],2);  

# 把结果写到图片附件
eq <- bquote( atop( "y = " * .(slope) * " x + " * .(intercept), R^2 == .(rr) ) );  
text(12,6e3,eq); 

代码分析:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

补充:该图中有两个异常点,怎么找?

在这里插入图片描述



2. 直方图(一维数据):hist

hist()可以用来画直方图,hist常用参数:

# ------------ ------------
hist(x)  
# breaks表示分成多少个柱子
hist(x,breaks = 80)  
# 柱子大小可以不一样
hist(x,breaks = c(0,300,1000,2000,15000))  

# freq=F 会使y坐标由频数变成占比
hist(x,breaks = 80,freq = F)  
# 设置density后,柱子没有颜色,数值大小表示每英寸线的数量
hist(x,breaks = 80,density = 5)  

?hist 

最终效果:
在这里插入图片描述
数据:
在这里插入图片描述

代码:

#基因长度分布图
x <- read.table("H37Rv.gff",sep = "\t",header = F,skip = 7,quote = "")  
# 刷选:要求第3列为gene
x <- x[x$V3=="gene",]  
# 求出基因长度
x <- abs(x$V5-x$V4)+1 

#------------测试数据是否正确----------------------
# 共有多少行
length(x)
# 最小值,最大值
range(x)  


# --------------画直方图--------------
h <- hist(x,breaks= 80,col="pink",xlab="Gene Length (bp)",main="Histogram of Gene Length");  

#rug是在x坐标轴上标出元素出现的频数。出现一次,就会画一个小竖杠。
#从rug的疏密可以看出变量是什么地方出现的次数多,什么地方出现的次数少。
rug(x);

# --------------蓝色的线---------------------
# 取100个 ——> x点
xfit<-seq(min(x),max(x),length=100);

# 取y点
yfit<-dnorm(xfit,mean=mean(x),sd=sd(x));
yfit <- yfit*diff(h$mids[1:2])*length(x);
# 画线
lines(xfit, yfit, col="blue", lwd=2);



3. 条形图:barplot

barplot()主要参数的含义如下:

height:向量或矩阵,用来构成条形图中各条的数值。
names.arg:位于条低端的文字标签。

beside: 逻辑值,为FALSE时绘制堆叠图,为TRUE时绘制分组图。
horiz: 逻辑值,为FALSE时,绘制垂直条形图,为TRUE时绘制水平条形图。

density:一个向量值。当指定该值时,条将以斜线填充。即每英寸斜线的密度。
angle:以逆时针方向给出的阴影线的角度。默认为45度。

col:条的填充色。
border:条的边框颜色,如设置为TRUE时,边框颜色将于阴影线的颜色相同。

main:用于指定绘图的主标题。
sub:用于指定绘图的次标题。
xlab, ylab :用于指定x轴和y轴的标签。
xlim, ylim:分别用于指定x轴和y轴的取值范围

简单例子:
 在这里插入图片描述

3.1 一维数据条形图

All <- read.csv(file = "homo_length.csv",header = T)
# 取1~24行,第2列
hg19_24 <- All[1:24,2]   
> hg19_24  #一维数据
[1] 249250621 243199373 198022430 191154276 180915260 171115067 159138663 146364022
[9] 141213431 135534747 135006516 133851895 115169878 107349540 102531392  90354753
[17]  81195210  78077248  59128983  63025520  48129895  51304566 155270560  59373566


library(RColorBrewer) 
# n=x种颜色,name为面板颜色的名字
cols <- brewer.pal(n = 6,name = "Set1")  


barplot(height = hg19_24,names.arg = c(All$chr[1:24]),col = cols) 

在这里插入图片描述

3.2 分组条形图 (多维数据)

x <- read.csv("sv_distrubution.csv",header = T,row.names = 1) 
> x
Contraction Deletion Expansion Insertion
1           97      183       234       265
2          134      193       135       240
3          113      134       122       196
4          116      159       111       144
还有....行

# 要转置才能画出来
barplot(t(as.matrix(x)))  

在这里插入图片描述
将图片放大,x坐标就会从1增加到最大值

改进:

barplot(t(as.matrix(x)),col = rainbow(4),legend.text = colnames(x),ylim = c(0,800),
                              main = “SV Distribution”,xlab=“Chromosome Number”,ylab=“SV Numbers”)



4. 饼图、扇形图(R不推荐,难看)

饼图:pie( )
3D饼图:pie3D( )
扇形图:fan.plot( )
R不推荐,难看。如果要画的话,用excel画


5. 箱线图(一维、二维、三维):boxplot

参考别人:箱线图应该怎么看,有什么意义?
该图是由5个特征值绘制而成的图形。
5个特征值是变量的:最小值、下四分位数、中位数、上四分位数、最大值

boxplot( )主要参数的含义:

formula: 公式,形如y~grp,其中y为向量【也就是纵坐标】,grp是数据的分组,通常为因子。
data: 数据框或列表,用于提供公式中的数据。

range: 数值,默认为1.5,表示触须的范围(就是箱子的虚线长度),计算公式:range × (上四分数 - 下四分数)

width: 指定箱体的相对宽度,当有多个箱体时,有效。【如:c(1,0.5,1,3,1,0.5)】
varwidth:逻辑值,控制箱体的宽度, 只有图中有多个箱体时才发挥作用,默认为FALSE, 所有箱体的宽度相同。
          当其值为TRUE时,代表【每个箱体的样本量】作为其相对宽度

notch: 逻辑值,如果该参数设置为TRUE,则在箱体两侧会出现凹口。默认为FALSE。
        用来看中间50%的数据,是大于中位数多,还是小于中位数多
        
outline: 逻辑值,如果该参数设置为FALSE,则箱线图中不会绘制离群值。默认为TRUE。

names:绘制在每个箱线图下方的分组标签。
plot : 逻辑值,是否绘制箱线图,如设置为FALSE,则不绘制箱线图,而给出绘制箱线图的相关信息,如5个点的信息等。
border:箱线图的边框颜色。
col:箱线图的填充色。
horizontal:逻辑值,指定箱线图是否水平绘制,默认为FALSE

数据:【如果数据容量不同,应令varwidth=TRUE】
在这里插入图片描述

代码:

boxplot(len ~ dose:supp, data = ToothGrowth,col = c("orange", "red"))

在这里插入图片描述



6. 小提琴图:vioplot

就是箱线图+ 密度曲线(表示数据是这个值的个数 / 总体)

例子:

install.packages("vioplot")
library(vioplot)

vioplot(len ~ supp+dose,data = ToothGrowth,col=rep(c("cyan","violet"),3))

在这里插入图片描述


7. 韦恩图

用于可视化元素集合重叠区域的图示。

7.1 venn包的venn( )

数据准备:

install.packages("venn")
library(venn)

listA <- read.csv("genes_list_A.txt",header=FALSE)   # list是数据框
A <- listA$V1  # A是向量
listB <- read.csv("genes_list_B.txt",header=FALSE)
B <- listB$V1
listC <- read.csv("genes_list_C.txt",header=FALSE)
C <- listC$V1
listD <- read.csv("genes_list_D.txt",header=FALSE)
D <- listD$V1
listE <- read.csv("genes_list_E.txt",header=FALSE)
E <- listE$V1

# A,B,C,D,E行数不一样,所以不能组成数据框
#组成一个列表(元素是列表)
alist <- list(A,B,C,D,E)
alist

画图:

取前四个列表,col是边界颜色,zcolor是内部区域颜色,ellipse = T图形为椭圆
venn(alist[1:4],col = c("red","blue"),zcolor = c("blue","green"),ellipse = T)

在这里插入图片描述

venn(alist[1:4],zcolor = rainbow(5),ellipse = T,ilabels =T )

好看点:
在这里插入图片描述

7.2 ggplot2包的ggVennDiagram( )

参考别人的博客:参数介绍
参考别人的博客:【R语言科研绘图】——韦恩图

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你说的白是什么白_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值