Origin绘制多因子分组柱状图+pheatmap绘制热图


Feynman Technique1 ,查了相关资料,发现了一个有趣的网站。

总的来说,费曼学习就是:学习——解释——内化——回顾。一家之言,自己的理解。

  1. Choose a concept you want to learn about
  2. Explain it to a 12 year old
  3. Reflect, Refine, and Simplify
  4. Organize and Review

近期学的一些绘图东西。

Origin绘制多因子分组柱状图

1 数据源

data("Orange") #R包中的Data frame

2 将数据整理进入Origin

   Tree(A X1)  age(B X2) circumference(C Y2)
1     1  118            30
2     1  484            58
3     1  664            87
4     1 1004           115
5     1 1231           120
6     1 1372           142
7     1 1582           145
8     2  118            33
9     2  484            69
10    2  664           111
11    2 1004           156
12    2 1231           172
13    2 1372           203
14    2 1582           203
15    3  118            30
16    3  484            51
17    3  664            75
18    3 1004           108
19    3 1231           115
20    3 1372           139
21    3 1582           140
22    4  118            32
23    4  484            62
24    4  664           112
25    4 1004           167
26    4 1231           179
27    4 1372           209
28    4 1582           214

3 步骤

绘图-多因子分组柱状图-选择数据列和子组列

4 调整细节

pheatmap绘制热图

  1. 加载R包
  2. 加载矩阵
  3. 绘图并调整参数
# install.packages("pheatmap")
library(pheatmap)

# Data 
set.seed(8)
m <- matrix(rnorm(200), 10, 10)
colnames(m) <- paste("Col", 1:10)
rownames(m) <- paste("Row", 1:10)

# Heat map
pheatmap(m) 

热图的意义是什么?

生物学热图在分子生物学中通常用于表示从DNA微数组中获得的许多基因在一些可比样本(如不同状态的细胞、不同患者的样本)中的表达水平。

实现热图绘制的方法?

R包、Orange、EXCEL、GraphPad Prism、在线工具。

如何美化热图?

pheatmap调整参数。主要是参数的学习。

phearmap实列代码

$$ df1文件展示部分 $$

CK1CK2CK3T1T2T3S1S2S3
gene10.8362490.6232160.8089620.5218670.1659040.7520690.8302190.4677880.119704
gene20.1595840.0992850.3928720.1890150.3950910.2419410.1039810.0245780.633047
gene30.4573520.0335820.8742580.7051150.567440.7608620.4736440.2551410.401321
gene40.0524430.1545230.6578480.5248220.8399680.9362550.7451480.6533760.917294
gene50.2663750.7908990.5254760.5020150.7178430.3977920.7474420.2518950.252494
gene60.6812510.4673770.3742380.1034390.4382330.3261170.4220920.0730650.941392
gene70.8594550.1997060.9156210.6460890.9971530.6720880.6801040.4057420.881277
gene80.0025770.1720.310130.5225610.3765290.4310170.4006310.0574950.74075
gene90.0574590.3303850.7573140.3643140.8234820.5381220.9685160.9839420.103645
gene100.897640.7349780.2766260.209880.9272680.1376220.7499590.692150.690727
gene110.9735720.4483050.447910.9593250.2755360.4489880.9036930.5600460.281868

$$ **df2文件展示** $$

Sample
CK1CK
CK2CK
CK3CK
T1T
T2T
T3T
S1S
S2S
S3S

$$ **df3文件展示** $$

Class
gene1path1
gene2path1
gene3path1
gene4path1
gene5path1
gene6path1
gene7path1
gene8path1
gene9path1
gene10path1
gene11path1
gene12path1
gene13path1
gene14path2
gene15path2
gene16path2
gene17path2
gene18path2
gene19path2
gene20path2
gene21path2
gene22path3
gene23path3
gene24path3
gene25path3
gene26path3
gene27path3
gene28path3
gene29path3

代码展示

#设置工作目录
setwd("D:/研毕设/R/j聚类分析/TEST")
#导入pheatmap
library(pheatmap)
#二维矩阵数据
df1 <- read.csv("df1.csv",row.names = 1)
#分组文件1
df2<-read.csv("df2.csv",row.names=1)
#分组文件2
df3<-read.csv("df3.csv",row.names=1)
#颜色列表
cg1_colors <- list(
  Sample <- c(CK <- "#7570B3", T <- "#E7298A", S <- "#66A61E"),
  Class <- c(path1 <- "orange",path2 <- "purple",path3 <- "plum")
)
pheatmap(df1,
         scale = "row", #行归一化
         color = colorRampPalette(c("blue", "white", "red"))(100), #调色3个颜色,100个度
         border=NA, # 边框颜色,NA无
         cluster_rows = TRUE, #行是否聚类
         cluster_cols = TRUE, #列是否聚类
         clustering_distance_rows = "correlation", #表示行距离度量的方法
         clustering_distance_cols = "correlation", #表示列距离度量的方法
         cutree_rows = 3,#基于层次聚类(使用cutree)划分行的簇数(如果未聚集行,则忽略参数)
         cutree_cols = 3,#基于层次聚类(使用cutree)划分列的簇数(如果未聚集行,则忽略参数)
         treeheight_col = 40, #列树高40
         treeheight_row = 40,#行树高40
         legend = TRUE, #逻辑来确定是否应该绘制图例
         legend_breaks = NA, #显示多少个颜色数值段
         legend_labels = NA, #对色度条上对应位置的字符进行修改
         annotation_col = df2, #列标签注释
         annotation_row = df3, #行标签注释
         annotation_colors = cg1_colors, #颜色列表
         show_rownames = T, #显示行名,基因太多了可以F
         angle_col = 315, #旋转度数支持45,90,270,315度
)

  • 在read.table上卡了很久,我发誓以后只用read.csv。
  • pheatmap使用分组的对应关系要准确。

函数解释

mat # 需要绘制热图的数字矩阵。
color # 表示颜色,赋值渐变颜色调色板colorRampPalette属性,选择"蓝,白,红"渐变,分为100个等级
# 例 color =  colorRampPalette(c("navy", "white", "red"))(100)
kmeans_k # 绘制热图的行聚类数,如果是NA,那么行不会聚类。
breaks  # 设置mat数值范围的数字序列
border_color # 表示热图上单元格边框的颜色,如果不绘制边框,则使用NA
cellwidth # 表示每个单元格的宽度,若选择NA则表示适应窗口
cellheight # 表示每个单元格的高度,若选择NA则表示适应窗口
scale # 表示值均一化的方向,或者按照行或列,或者没有,值可以是"row",  “column” 或者"none"
cluster_rows # 表示进行行的聚类,值可以是FALSE或TRUE
cluster_cols # 表示进行列的聚类,值可以是FALSE或TRUE
clustering_distance_rows # 表示行距离度量的方法
clustering_distance_cols # 表示列距离度量的方法
clustering_method # 表示聚类方法,值可以是hclust的任何一种,
# 如"ward.D",“single”,  “complete”, “average”, “mcquitty”, “median”, “centroid”, “ward.D2”
clustering_callback # 回调函数来修改聚类
cutree_rows # 基于层次聚类(使用cutree)划分行的簇数(如果未聚集行,则忽略参数)
cutree_cols  # 基于层次聚类(使用cutree)划分列的簇数(如果未聚集行,则忽略参数)
treeheight_row # 行的树的高度,
treeheight_col # 列的树的高度
legend # TRUE或者FALSE,表示是否显示图例
legend_breaks # 设置图例的断点,如legend_breaks =  -1:4
legend_labels # legend_breaks对应的标签例:legend_breaks = -1:4, legend_labels = c(“0”,“1e-4”, “1e-3”, “1e-2”, “1e-1”, “1”)
annotation_row # 行的分组信息,需要使用相应的行名称来匹配数据和注释中的行,注意之后颜色设置会考虑离散值还是连续值,格式要求为数据框
annotation_col # 列的分组信息,需要使用相应的列名称来匹配数据和注释中的列,格式要求为数据框
annotation_colors  # 用于手动指定annotation_row和annotation_col  track颜色的列表。
annotation_legend # 是否显示图例的名称。
annotation_names_row # 是否显示行注释的名称。
annotation_names_col # 是否显示列注释的名称。
show_rownames # 是否显示行名
show_colnames # 是否显示列名
main  # 图的名字
fontsize # 图的字体大小
fontsize_row # 行名的字体大小,默认与图的字体大小相同
fontsize_col # 列名的字体大小,默认与图的字体大小相同
angle_col # 列标签的角度,可选择 (0, 45, 90, 270 and 315)
display_numbers # 表示是否将数值显示在热图的格子中,如果这是一个矩阵(与原始矩阵具有相同的尺寸),则显示矩阵的内容而不是原始值。
number_format # 设置显示数值的格式,较常用的有"%.2f"(保留小数点后两位),"%.1e"(科学计数法显示,保留小数点后一位)
number_color # 设置显示内容的颜色
fontsize_number # 设置显示内容的字体大小
labels_row  # 代替行名的自定义标签 
labels_col # 代替列名的自定义标签
filename # 图片保存位置以及文件名
width # 手动设置输出文件的宽度(单位:英寸)
height # 手动设置输出文件的高度(单位:英寸)
silent # 不绘制热图
na_col # 缺失值的颜色

声明:紫慕碎碎念|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Origin绘制多因子分组柱状图+pheatmap绘制热图


清澈、明净、优雅,愿以此为人生路上的航标!