Feynman Technique1 ,查了相关资料,发现了一个有趣的网站。
总的来说,费曼学习就是:学习——解释——内化——回顾。一家之言,自己的理解。
- Choose a concept you want to learn about
- Explain it to a 12 year old
- Reflect, Refine, and Simplify
- 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绘制热图
- 加载R包
- 加载矩阵
- 绘图并调整参数
# 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文件展示部分 $$
CK1 | CK2 | CK3 | T1 | T2 | T3 | S1 | S2 | S3 | |
---|---|---|---|---|---|---|---|---|---|
gene1 | 0.836249 | 0.623216 | 0.808962 | 0.521867 | 0.165904 | 0.752069 | 0.830219 | 0.467788 | 0.119704 |
gene2 | 0.159584 | 0.099285 | 0.392872 | 0.189015 | 0.395091 | 0.241941 | 0.103981 | 0.024578 | 0.633047 |
gene3 | 0.457352 | 0.033582 | 0.874258 | 0.705115 | 0.56744 | 0.760862 | 0.473644 | 0.255141 | 0.401321 |
gene4 | 0.052443 | 0.154523 | 0.657848 | 0.524822 | 0.839968 | 0.936255 | 0.745148 | 0.653376 | 0.917294 |
gene5 | 0.266375 | 0.790899 | 0.525476 | 0.502015 | 0.717843 | 0.397792 | 0.747442 | 0.251895 | 0.252494 |
gene6 | 0.681251 | 0.467377 | 0.374238 | 0.103439 | 0.438233 | 0.326117 | 0.422092 | 0.073065 | 0.941392 |
gene7 | 0.859455 | 0.199706 | 0.915621 | 0.646089 | 0.997153 | 0.672088 | 0.680104 | 0.405742 | 0.881277 |
gene8 | 0.002577 | 0.172 | 0.31013 | 0.522561 | 0.376529 | 0.431017 | 0.400631 | 0.057495 | 0.74075 |
gene9 | 0.057459 | 0.330385 | 0.757314 | 0.364314 | 0.823482 | 0.538122 | 0.968516 | 0.983942 | 0.103645 |
gene10 | 0.89764 | 0.734978 | 0.276626 | 0.20988 | 0.927268 | 0.137622 | 0.749959 | 0.69215 | 0.690727 |
gene11 | 0.973572 | 0.448305 | 0.44791 | 0.959325 | 0.275536 | 0.448988 | 0.903693 | 0.560046 | 0.281868 |
$$ **df2文件展示** $$
Sample | |
---|---|
CK1 | CK |
CK2 | CK |
CK3 | CK |
T1 | T |
T2 | T |
T3 | T |
S1 | S |
S2 | S |
S3 | S |
$$ **df3文件展示** $$
Class | |
---|---|
gene1 | path1 |
gene2 | path1 |
gene3 | path1 |
gene4 | path1 |
gene5 | path1 |
gene6 | path1 |
gene7 | path1 |
gene8 | path1 |
gene9 | path1 |
gene10 | path1 |
gene11 | path1 |
gene12 | path1 |
gene13 | path1 |
gene14 | path2 |
gene15 | path2 |
gene16 | path2 |
gene17 | path2 |
gene18 | path2 |
gene19 | path2 |
gene20 | path2 |
gene21 | path2 |
gene22 | path3 |
gene23 | path3 |
gene24 | path3 |
gene25 | path3 |
gene26 | path3 |
gene27 | path3 |
gene28 | path3 |
gene29 | path3 |
代码展示
#设置工作目录
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 # 缺失值的颜色
Comments | NOTHING