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

news2024/12/25 13:02:11

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
  • 2. 直方图(一维数据):hist
  • 3. 条形图:barplot
    • 3.1 一维数据条形图
    • 3.2 分组条形图 (多维数据)
  • 4. 饼图、扇形图(R不推荐,难看)
  • 5. 箱线图(一维、二维、三维):boxplot
  • 6. 小提琴图:vioplot
  • 7. 韦恩图
    • 7.1 venn包的venn( )
    • 7.2 ggplot2包的ggVennDiagram( )

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语言科研绘图】——韦恩图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/175253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

九大数据分析方法-综合型分析方法以及如何使用这九大分析方法

文章目录3 综合型分析方法3.1 相关性分析法3.1.1 直接相关3.1.2 间接相关3.2标签分析法3.3 MECE法4 如何使用九大方法本文来源&#xff0c;为接地气的陈老师的知识星球&#xff0c;以及付同学的观看笔记。3 综合型分析方法 3.1 相关性分析法 相关性分析法&#xff1a;寻找指标…

ROS2机器人编程简述humble-第二章-Executors .3.5

ROS2机器人编程简述humble-第二章-Parameters .3.4由于ROS2中的节点是C对象&#xff0c;因此一个进程可以有多个节点。事实上&#xff0c;在许多情况下&#xff0c;这样做是非常有益的&#xff0c;因为当通信处于同一进程中时&#xff0c;可以通过使用共享内存策略来加速通信。…

freeglut 在mfc 下的编译

freeglut 是OpenGL Utility Toolkit (GLUT) library 的替代版本&#xff0c;glut 应用广阔&#xff0c;但比较陈旧&#xff0c;很久没有更新。 我原来的opengl 用的是glut&#xff0c; 想更新到64位版本&#xff0c;怎么也找不到合适的下载。最后找到完全替代版本freeglut。fre…

【Linux】线程概念 | 互斥

千呼万唤始出来&#xff0c;终于到多线程方面的学习了&#xff01; 所用系统Centos7.6 本文的源码&#x1f449;【传送门】 最近主要是在我的hexo个人博客上更新&#xff0c;csdn的更新会滞后 文章目录1.线程的概念1.1 执行流1.2 线程创建时做了什么&#xff1f;1.3 内核源码中…

每刻和金蝶云星空接口打通对接实战

接通系统&#xff1a;每刻3000中大型企业在用&#xff0c;新一代业财税一体化解决方案提供商。旗下拥有每刻报销、每刻档案、每刻云票、每刻财务共享云平台等&#xff0c;助力企业实现财务数字化转型。对接系统&#xff1a;金蝶云星空金蝶K/3Cloud结合当今先进管理理论和数十万…

算法刷题打卡第72天:最少侧跳次数

最少侧跳次数 难度&#xff1a;中等 给你一个长度为 n 的 3 跑道道路 &#xff0c;它总共包含 n 1 个 点 &#xff0c;编号为 0 到 n 。一只青蛙从 0 号点第二条跑道 出发 &#xff0c;它想要跳到点 n 处。然而道路上可能有一些障碍。 给你一个长度为 n 1 的数组 obstacle…

Cheat Engine7.4 训练教程(非常详细)

目录 一.CE是干什么的&#xff1f; 二.怎么获得&#xff1f; 三.训练教程 步骤 1: 加载进程 步骤 2: 精确值扫描 步骤 3: 未知的初始值 步骤 4: 浮点数 步骤 5: 代码查找 步骤 6: 指针 步骤 7: 代码注入 步骤 8: 多级指针 提示&#xff1a;这篇文章不是一天写完的&a…

设计模式-建造者模式

1.概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于&#xff1a;某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦…

基于ffmpeg的视频处理与MPEG的压缩试验(下载安装使用全流程)

基于ffmpeg的视频处理与MPEG的压缩试验ffmpeg介绍与基础知识对提取到的图像进行处理RGB并转化为YUV对YUV进行DCT变换对每个8*8的图像块进行进行量化操作ffmpeg介绍与基础知识 ffmpeg是视频和图像处理的工具包&#xff0c;它的下载网址是https://ffmpeg.org/download.html。页面…

MySQL高级

存储引擎 MySQL体系结构&#xff1a; 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表而不是基于库的&#xff0c;所以存储引擎也可以被称为表引擎。 默认存储引擎是InnoDB。 相关操作&#xff1a; -- 查询建表语句 show create table ac…

Python量化交易07——散户反买策略

参考来源&#xff1a;b站up 邢不行 我们都知道在A股&#xff0c;散户一直是最大的韭菜贡献组群。散户买入多的个股&#xff0c;大概率可能跌的很惨&#xff0c;散户卖出多的股票&#xff0c;大概率会涨。 跟着北向资金买能赚钱&#xff0c;那么跟着散户反买&#xff0c;是不是…

宝塔面板部署Django项目教程(手把手)

一、测试环境 系统&#xff1a;centos 7.9 CPU&#xff1a;1核 内存&#xff1a;2G 二、安装宝塔面板 输入命令&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec 后面会…

【nvidia CUDA 高级编程】使用cub库优化分布式计算下的原子操作

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

MySQL数据库相关错题本

1) MySQL数据库相关错题本1、存储引擎相关1、MySql的存储引擎的不同MySQL存储引擎主要有InnoDB, MyISAM, Memory, 这三个区别在于:Memory是内存数据引擎, 会断电重启(在双M或者主从架构下会产生较多异常), 且不支持行级锁. 默认索引是数组索引, 支持B索引InnoDB和MyISAM的区别:…

【React全家桶】react简介(一)

react简介创建项目creat-react-app1.1 React特点1.2 引入文件1.3 JSX1.3.1 为什么要用JSX1.3.2 JSX语法规则1.4 虚拟DOM1.5 模块与组件1.5.1 模块React面向组件编程2.1 创建组件2.1.1 函数式组件2.1.2 类式组件2.2 组件实例的三大属性2.2.1 state属性2.2.2 props属性2.2.3 refs…

jvm学习的核心(三)---运行时数据区详解(2)

文章目录1.堆&#xff08;heap&#xff09;1.1 堆的概述1.2 堆的内部结构1.3 堆分代垃圾回收流程的简单理解2.方法区&#xff08; Method Area&#xff09;2.1 HotSpot方法区的演进2.2方法区的内部结构2.3.1 常量池和运行时常量池概念区别1.堆&#xff08;heap&#xff09; 1.1…

Linux常用命令——supervisord命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) supervisord 配置后台服务/常驻进程的进程管家工具 安装 # 安装 supervisord apt-get install supervisor实例 生成配置文件/etc/supervisord.conf [program:app] command/usr/bin/gunicorn -w 1 wsgiapp:ap…

Java面试2

Java面试2目录概述需求&#xff1a;设计思路实现思路分析1.java 面试题参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challenge Survive.…

学习记录665@项目管理之项目成本管理

友情提示&#xff1a;对于这部分书上的内容&#xff0c;我个人认为是花里胡哨&#xff0c;形式大于内容的&#xff0c;特别是涉及到很多挣值管理有些指标和公式&#xff0c;没有任何例子&#xff0c;死板生硬。 什么是项目成本管理 项目管理受范围、时间、成本和质量的约束&am…

回溯——排列组合

1.组合(结果不区分顺序) 1.同一个集合求组合需要startindex 需要startindex 1.元素可以重复使用 startindex为i 例&#xff1a; lc39[组合总和] 给定一个无重复元素的数组 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组…