使用 pheamap 将特定颜色分配给热图中的一系列值
Assigning specific color to a range of values in heatmap using pheamap
我想使用 pheatmap 制作一个热图,如果任何东西介于 -1 到 -0.5 之间,它应该是深绿色,任何介于 -0.5 到 -0.10 之间的东西都是浅绿色,任何介于 -0.10 到 0 之间的东西应该是白色。同样,0 到 0.10 为白色,0.10 到 0.5 为浅紫色,0.5 到 1 之间为紫色。我也不想扩展我的数据并且没有集群。到目前为止,我在 R:
中有这段代码
0.85 0.63 0.61 0.60 0.53 0.23 0.20 0.15 0.12 0.08 0.04 -0.05 -0.08 -0.19 -0.34 -0.56 -0.78
0.75 0.54 0.51 0.50 0.45 0.41 0.35 0.12 0.08 0.04 -0.01 -0.07 -0.15 -0.45 -0.51 -0.57 -0.68
df <- read.table("test.txt", header = FALSE, sep = "\t")
pheatmap(as.matrix(df),
scale="none",
cluster_rows = FALSE,
cluster_cols = FALSE,
annotation_names_col = FALSE,
show_colnames= FALSE,
color = colorRampPalette(colors = c("darkgreen","white","purple"))(200),
main = "A3SS",
border_color = NA,
fontsize_row=10
)
如何在作弊图中使用中断来实现我的目标?
您必须设置中断并正确构建调色板 - 如果您真的想要 200 种颜色(如果没有,请参阅下一节),这应该可以完成工作:
library(pheatmap)
# dummy data
df <- data.table::fread("0.85 0.63 0.61 0.60 0.53 0.23 0.20 0.15 0.12 0.08 0.04 -0.05 -0.08 -0.19 -0.34 -0.56 -0.78
0.75 0.54 0.51 0.50 0.45 0.41 0.35 0.12 0.08 0.04 -0.01 -0.07 -0.15 -0.45 -0.51 -0.57 -0.68")
# make the color pallete
clrsp <- colorRampPalette(c("darkgreen", "white", "purple"))
clrs <- clrsp(200)
breaks1 <- seq(-1, 1, length.out = 200)
pheatmap(as.matrix(df),
scale="none",
cluster_rows = FALSE,
cluster_cols = FALSE,
annotation_names_col = FALSE,
show_colnames= FALSE,
color = clrs,
main = "A3SS",
breaks = breaks1,
fontsize_row=10)
如果您只想使用五种颜色并精确地按照通知的值进行切割,一个选项是从 RColorBrewer 包的已制作托盘中采购:
breaks2 <- c(-1, -0.5, -0.1, 0.1, 0.5, 1)
pheatmap(as.matrix(df),
scale="none",
cluster_rows = FALSE,
cluster_cols = FALSE,
annotation_names_col = FALSE,
show_colnames= FALSE,
color = rev(RColorBrewer::brewer.pal(5, name = "PiYG")),
main = "A3SS",
breaks = breaks2,
fontsize_row=10)
或者,您可以在矢量中告知颜色,但文本中没有明确的浅紫色,无论如何您可以使用十六进制颜色代码来更精确,然后只是“浅色”/“深色”:
pheatmap(as.matrix(df),
scale="none",
cluster_rows = FALSE,
cluster_cols = FALSE,
annotation_names_col = FALSE,
show_colnames= FALSE,
color = c("darkgreen","lightgreen","white","darkorchid1","purple"),
main = "A3SS",
breaks = breaks2,
fontsize_row=10)
我想使用 pheatmap 制作一个热图,如果任何东西介于 -1 到 -0.5 之间,它应该是深绿色,任何介于 -0.5 到 -0.10 之间的东西都是浅绿色,任何介于 -0.10 到 0 之间的东西应该是白色。同样,0 到 0.10 为白色,0.10 到 0.5 为浅紫色,0.5 到 1 之间为紫色。我也不想扩展我的数据并且没有集群。到目前为止,我在 R:
中有这段代码0.85 0.63 0.61 0.60 0.53 0.23 0.20 0.15 0.12 0.08 0.04 -0.05 -0.08 -0.19 -0.34 -0.56 -0.78
0.75 0.54 0.51 0.50 0.45 0.41 0.35 0.12 0.08 0.04 -0.01 -0.07 -0.15 -0.45 -0.51 -0.57 -0.68
df <- read.table("test.txt", header = FALSE, sep = "\t")
pheatmap(as.matrix(df),
scale="none",
cluster_rows = FALSE,
cluster_cols = FALSE,
annotation_names_col = FALSE,
show_colnames= FALSE,
color = colorRampPalette(colors = c("darkgreen","white","purple"))(200),
main = "A3SS",
border_color = NA,
fontsize_row=10
)
如何在作弊图中使用中断来实现我的目标?
您必须设置中断并正确构建调色板 - 如果您真的想要 200 种颜色(如果没有,请参阅下一节),这应该可以完成工作:
library(pheatmap)
# dummy data
df <- data.table::fread("0.85 0.63 0.61 0.60 0.53 0.23 0.20 0.15 0.12 0.08 0.04 -0.05 -0.08 -0.19 -0.34 -0.56 -0.78
0.75 0.54 0.51 0.50 0.45 0.41 0.35 0.12 0.08 0.04 -0.01 -0.07 -0.15 -0.45 -0.51 -0.57 -0.68")
# make the color pallete
clrsp <- colorRampPalette(c("darkgreen", "white", "purple"))
clrs <- clrsp(200)
breaks1 <- seq(-1, 1, length.out = 200)
pheatmap(as.matrix(df),
scale="none",
cluster_rows = FALSE,
cluster_cols = FALSE,
annotation_names_col = FALSE,
show_colnames= FALSE,
color = clrs,
main = "A3SS",
breaks = breaks1,
fontsize_row=10)
如果您只想使用五种颜色并精确地按照通知的值进行切割,一个选项是从 RColorBrewer 包的已制作托盘中采购:
breaks2 <- c(-1, -0.5, -0.1, 0.1, 0.5, 1)
pheatmap(as.matrix(df),
scale="none",
cluster_rows = FALSE,
cluster_cols = FALSE,
annotation_names_col = FALSE,
show_colnames= FALSE,
color = rev(RColorBrewer::brewer.pal(5, name = "PiYG")),
main = "A3SS",
breaks = breaks2,
fontsize_row=10)
或者,您可以在矢量中告知颜色,但文本中没有明确的浅紫色,无论如何您可以使用十六进制颜色代码来更精确,然后只是“浅色”/“深色”:
pheatmap(as.matrix(df),
scale="none",
cluster_rows = FALSE,
cluster_cols = FALSE,
annotation_names_col = FALSE,
show_colnames= FALSE,
color = c("darkgreen","lightgreen","white","darkorchid1","purple"),
main = "A3SS",
breaks = breaks2,
fontsize_row=10)