写在前面
【这图怎么画】系列的图都来自VIP群
里同学的提问。推文只是对图片的复现,不代表作者对图片展现形式的认同。欢迎同学们在群里分析有意思的图片。
本期图片
❝VIP群里同学的提问,图片来源未知,很显然相较于图片的绘制,本图的数据来源才是难点。基本思路就是:模型+循环,这里就先按下不表。本篇推文还是简单来画个图。
❞
复现结果
示例数据和代码领取
木舟笔记永久VIP企划
「权益:」
「木舟笔记所有推文示例数据及代码(「在VIP群里」实时更新」)。
data+code 木舟笔记「科研交流群」。
「收费:」
「169¥/人」。可添加微信:mzbj0002
转账(或扫描下方二维码),或直接在文末打赏。木舟笔记「2022VIP」可直接支付「70¥」升级。
❝❞
点赞
、在看
本文,分享至朋友圈集赞30个
并保留30分钟
,可优惠20¥
。
绘图
library(RColorBrewer)
library(ComplexHeatmap)
## sample
model_data <- data.frame(row.names = paste0('model',1:20),
data1 = runif(20,0.55,0.90),
data2 = runif(20,0.55,0.85),
data3 = runif(20,0.55,0.85),
data4 = runif(20,0.55,0.85))
## 平均C-index
mean <- apply(model_data, 1, mean)
mean_sort <- sort(mean, decreasing = T)
model_data <- model_data[names(mean_sort), ]
## plot
### barplot
row_bar = rowAnnotation(bar = anno_barplot(mean_sort, bar_width = 0.8, border = FALSE,
gp = gpar(fill = "#aa9b81", col = NA),
add_numbers = F, # 不显示数字
width = unit(2, "cm")),
show_annotation_name = F)
### top annotation
CohortCol <- c('#bc492f','#316da8','#428458','#7c76b0') # 设置队列颜色
names(CohortCol) <- colnames(model_data)
col_title = columnAnnotation("Cohort" = colnames(model_data),
col = list("Cohort" = CohortCol),
show_annotation_name = F)
hm <- Heatmap(as.matrix(model_data), name = "C-index",
right_annotation = row_bar,
top_annotation = col_title,
col = c("#58aaa1", "#FFFFFF", "#e7bc6a"),
rect_gp = gpar(col = "gray", lwd = 1),
cluster_columns = FALSE, cluster_rows = FALSE,
show_column_names = FALSE,
show_row_names = TRUE,
row_names_side = "left",
column_split = factor(colnames(model_data), levels = colnames(model_data)),
column_title = NULL,
heatmap_legend_param = list(
border = 'black'
),
cell_fun = function(j, i, x, y, w, h, col) { # add text to each grid
grid.text(label = format(model_data[i, j], digits = 3, nsmall = 3),
x, y, gp = gpar(fontsize = 10))
}
)
## save
pdf("Cindex.pdf", width = 6, height = 7)
draw(hm)
invisible(dev.off())