{"id":465,"date":"2023-05-11T12:01:44","date_gmt":"2023-05-11T12:01:44","guid":{"rendered":"https:\/\/yunshangtulv.com.cn\/?p=465"},"modified":"2023-05-11T12:01:44","modified_gmt":"2023-05-11T12:01:44","slug":"sci%e5%9b%be%e7%89%87%e5%a4%8d%e7%8e%b0%ef%bc%9a%e7%83%ad%e5%9b%be%e6%8a%98%e7%ba%bf%e5%9b%be%e5%a0%86%e7%a7%af%e6%9f%b1%e7%8a%b6%e5%9b%be","status":"publish","type":"post","link":"https:\/\/yunshangtulv.com.cn\/?p=465","title":{"rendered":"SCI\u56fe\u7247\u590d\u73b0\uff1a\u70ed\u56fe+\u6298\u7ebf\u56fe+\u5806\u79ef\u67f1\u72b6\u56fe"},"content":{"rendered":"<p>\u4ee3\u7801\u5305\u542b\u4e09\u4e2a\u4e3b\u8981\u90e8\u5206\uff1a\u7ed8\u5236\u70ed\u56fe\u3001\u7ed8\u5236\u6298\u7ebf\u56fe\u548c\u7ed8\u5236\u5806\u79ef\u67f1\u72b6\u56fe\uff0c\u5e76\u6700\u540e\u5c06\u5b83\u4eec\u5408\u5e76\u5e76\u4fdd\u5b58\u4e3aPDF\u6587\u4ef6\u3002\u5728\u7ec6\u8282\u4e0a\uff0c\u6211\u4f1a\u8fdb\u884c\u4e00\u4e9b\u4fee\u6539\u4ee5\u589e\u5f3a\u53ef\u8bfb\u6027\u548c\u56fe\u5f62\u7684\u7f8e\u89c2\u5ea6\u3002<\/p>\n<p>\u9996\u5148\uff0c\u6211\u4eec\u9700\u8981\u52a0\u8f7d\u5fc5\u8981\u7684\u5e93\u3002\u5982\u679c\u5c1a\u672a\u5b89\u88c5\u8fd9\u4e9b\u5e93\uff0c\u9700\u8981\u9996\u5148\u5728R\u4e2d\u5b89\u88c5\u5b83\u4eec\u3002<\/p>\n<pre class=\"corepress-code-pre\"><code># \u52a0\u8f7d\u6240\u9700\u7684\u5e93\r\nlibrary(ggplot2)\r\nlibrary(tidyverse)\r\nlibrary(ComplexHeatmap)\r\nlibrary(RColorBrewer)\r\nlibrary(patchwork)\r\n<\/code><\/pre>\n<p><span>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u751f\u6210\u70ed\u56fe\u6240\u9700\u7684\u6570\u636e\u5e76\u7ed8\u5236\u70ed\u56fe\uff1a<\/span><\/p>\n<p>&nbsp;<\/p>\n<pre class=\"corepress-code-pre\"><code># \u70ed\u56fe\u6570\u636e\u6784\u5efa\r\nsample_ids &lt;- factor(c(paste0(\"P\", 1:17), \r\n                       paste0(\"M\", 1:10), \r\n                       paste0(\"C\", 1:3)), \r\n                     levels = c(paste0(\"P\", 1:17), \r\n                                paste0(\"M\", 1:10), \r\n                                paste0(\"C\", 1:3)))\r\n\r\nheatmap_data &lt;- data.frame(\r\n  Data_source = sample(c(\"GSE131907\", \"GSE123904\"), 30, replace = T),\r\n  Sample_Origins = rep(c(\"Primary\", \"Distant Metastasis\", \"Chemotherapy\"), c(15,12,3)),\r\n  Smoking = sample(c(\"Current Smoker\", \"Former Smoker\", \"Never Smoker\"), 30, replace = T),\r\n  EGFR = sample(c(\"EGFR Mutation\", \"WT\"), 30, replace = T),\r\n  Stages = sample(paste0(\"Stage\", 1:4), 30, replace = T)\r\n)\r\n\r\nrownames(heatmap_data) &lt;- sample_ids\r\n\r\n# \u5b9a\u4e49\u989c\u8272\r\ncolor_scheme &lt;- list(\r\n  Data_source = c(\"#ff8969\", \"#e9cd50\"),\r\n  Sample_Origins = c(\"#0e9cc4\", \"#f3734e\", \"#c05a9c\"),\r\n  Smoking = c(\"#bed4ad\", \"#bdd3ac\", \"#96c18c\"), \r\n  EGFR = c(\"#f7d4b5\",\"#fcf5dd\"),\r\n  Stages = c(\"#feeff4\", \"#f5cedc\", \"#f7afcc\", \"#ec75a7\")\r\n)\r\n\r\ncolor_vector &lt;- unlist(color_scheme)\r\n\r\nnames(color_vector) &lt;- c(\"GSE131907\", \"GSE123904\",\r\n                         \"Primary\", \"Distant Metastasis\", \"Chemotherapy\",\r\n                         \"Current Smoker\", \"Former Smoker\", \"Never Smoker\",\r\n                         \"EGFR Mutation\", \"WT\",\r\n                         paste0(\"Stage\", 1:4))\r\n\r\n# \u7ed8\u5236\u70ed\u56fe\r\nheatmap_plot &lt;- Heatmap(t(heatmap_data),\r\n                        col = color_vector,\r\n                        row_names_side = \"left\",\r\n                        row_names_gp = gpar(fontsize = 10),\r\n                        rect_gp = gpar(col = \"white\", lwd = 1),\r\n                        show_column_names = F,\r\n                        show_heatmap_legend = F)\r\n\r\n# \u4fdd\u5b58\u70ed\u56fe\u4e3a\u56fe\u7247\r\npng(\"heatmap.png\", width = 1000, height = 160)\r\ndraw(heatmap_plot)\r\ndev.off()\r\n\r\n# \u8bfb\u53d6\u70ed\u56fe\u56fe\u7247\r\nheatmap_img &lt;- readPNG(\"heatmap.png\")\r\nheatmap_grob &lt;- rasterGrob(heatmap_img)\r\n<\/code><\/pre>\n<p><span>\u7136\u540e\uff0c\u6211\u4eec\u751f\u6210\u6298\u7ebf\u56fe\u6240\u9700\u7684\u6570\u636e\u5e76\u7ed8\u5236\u6298\u7ebf\u56fe\uff1a<\/span><\/p>\n<p>&nbsp;<\/p>\n<pre class=\"corepress-code-pre\"><code># \u6298\u7ebf\u56fe\u6570\u636e\u6784\u5efa\r\nline_data &lt;- data.frame(\r\n  x = sample_ids,\r\n  value = c(sort(sample(1:10, 18, replace = T)),\r\n            sort(sample(4:12, 9, replace = T)),\r\n            sort(sample(6:10, 3, replace = T))\r\n  ))\r\n\r\n# \u7ed8\u5236\u6298\u7ebf\u56fe\r\nline_plot &lt;- ggplot(line_data, aes(x, value)) +\r\n  geom_point(size = 2) +\r\n  geom_line(size = 1, group = 1) +\r\n  scale_y_continuous(breaks = seq(0, 12, 2)) +\r\n  ylab(\"log2(Malignant Cell Number)\") +\r\n  theme_classic() +\r\n  theme(panel.grid = element_blank(),\r\n        axis.line.x = element_blank(),\r\n        axis.text.x = element_blank(),\r\n        axis.ticks.x = element_blank(),\r\n        axis.title.x = element_blank(),\r\n        axis.line.y = element_line(size = 1),\r\n        axis.ticks.y = element_line(size = 1))\r\n\r\n<\/code><\/pre>\n<p><span>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u751f\u6210\u5806\u79ef\u67f1\u72b6\u56fe\u6240\u9700\u7684\u6570\u636e\u5e76\u7ed8\u5236\u5806\u79ef\u67f1\u72b6\u56fe\uff1a<\/span><\/p>\n<p>&nbsp;<\/p>\n<pre class=\"corepress-code-pre\"><code># \u5806\u79ef\u67f1\u72b6\u56fe\u6570\u636e\u6784\u5efa\r\nbar_data &lt;- data.frame()\r\n\r\nfor (i in 1:30) {\r\n  cell_category &lt;- sample(3:6, 1)\r\n  bar_data_tmp &lt;- data.frame(\r\n    x = rep(sample_ids[i], cell_category),\r\n    values = sample(20:100, cell_category),\r\n    group = paste0(\"group\", 1:cell_category))\r\n  bar_data_tmp$proportion &lt;- bar_data_tmp$values\/sum(bar_data_tmp$values)\r\n  bar_data &lt;- rbind(bar_data, bar_data_tmp)\r\n}\r\n\r\n# \u7ed8\u5236\u5806\u79ef\u67f1\u72b6\u56fe\r\nbar_plot &lt;- ggplot(bar_data)+\r\n  geom_bar(aes(x, proportion*100, fill = group),\r\n           color = \"white\", width = 1, size = 1,\r\n           stat = \"identity\", position = \"stack\")+\r\n  scale_fill_brewer(palette = \"Set3\")+\r\n  theme_classic()+\r\n  ylab(\"Cell Proportion(%)\")+\r\n  theme(panel.grid = element_blank(),\r\n        legend.position = \"none\",\r\n        axis.line.x = element_blank(),\r\n        axis.ticks.x = element_blank(),\r\n        axis.title.x = element_blank(),\r\n        axis.line.y = element_line(size = 1),\r\n        axis.ticks.y = element_line(size = 1))\r\n\r\n<\/code><\/pre>\n<p>\u751f\u6210\u56fe\u4f8b<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"corepress-code-pre\"><code># \u81ea\u5b9a\u4e49\u56fe\u4f8b\uff1a\r\nlegend_list = list()\r\nfor(i in 1:ncol(heatmap_data)){\r\n  unique_values = sort(unique(heatmap_data[,i]))\r\n  title = colnames(heatmap_data)[i]\r\n  legend_list[[i]] = Legend(seq(0, 1, length.out = length(unique_values)), labels = unique_values,\r\n                    title = title, legend_gp = gpar(fill = cols_vec[unique_values]))\r\n}\r\n\r\n# \u628a\u5404\u4e2a\u56fe\u4f8b\u5408\u5e76\u5728\u4e00\u8d77\r\npacked_legend = packLegend(list = legend_list, \r\n                direction = \"vertical\", \r\n                column_gap = unit(5, \"mm\"), \r\n                row_gap = unit(1, \"cm\"))\r\n\r\n# \u4fdd\u5b58\u56fe\u4f8b\u4e3aPDF\r\npdf(\"legend.pdf\", height = 6, width = 1.5)\r\ndraw(packed_legend)\r\ndev.off()\r\n<\/code><\/pre>\n<p>\u4fdd\u5b58<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"corepress-code-pre\"><code># \u521b\u5efa\u56fe\u4f8b\r\nlegend &lt;- grid::textGrob(\"Legend\", gp = grid::gpar(fontsize = 14, fontface = \"bold\"))\r\n\r\n# \u7ec4\u5408\u56fe\u50cf\uff0c\u5e76\u6307\u5b9a\u6bcf\u4e2a\u5b50\u56fe\u7684\u9ad8\u5ea6\r\nfinal_plot &lt;- gridExtra::grid.arrange(legend, heatmap_grob, line_plot, bar_plot, ncol = 1, heights = c(1, 3, 2, 2))\r\n\r\n# \u4fdd\u5b58\u4e3a PDF\r\nggsave(\"final_plot.pdf\", final_plot, width = 10, height = 15)<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/yunshangtulv.com.cn\/wp-content\/uploads\/2023\/05\/1683806421893.webp\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/yunshangtulv.com.cn\/wp-content\/uploads\/2023\/05\/1683806456559.webp\" \/><\/p>\n<p>\u4f7f\u7528AI\u8fdb\u884c\u8c03\u6574\u7f8e\u5316\uff0c<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4ee3\u7801\u5305\u542b\u4e09\u4e2a\u4e3b\u8981\u90e8\u5206\uff1a\u7ed8\u5236\u70ed\u56fe\u3001\u7ed8\u5236\u6298\u7ebf\u56fe\u548c\u7ed8\u5236\u5806\u79ef\u67f1\u72b6\u56fe\uff0c\u5e76\u6700\u540e\u5c06\u5b83\u4eec\u5408\u5e76\u5e76\u4fdd\u5b58\u4e3aPDF\u6587\u4ef6\u3002\u5728\u7ec6\u8282\u4e0a\uff0c\u6211\u4f1a [&hellip;]<\/p>\n","protected":false},"author":111,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-465","post","type-post","status-publish","format-standard","hentry","category-r"],"_links":{"self":[{"href":"https:\/\/yunshangtulv.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yunshangtulv.com.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yunshangtulv.com.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yunshangtulv.com.cn\/index.php?rest_route=\/wp\/v2\/users\/111"}],"replies":[{"embeddable":true,"href":"https:\/\/yunshangtulv.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=465"}],"version-history":[{"count":0,"href":"https:\/\/yunshangtulv.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/465\/revisions"}],"wp:attachment":[{"href":"https:\/\/yunshangtulv.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yunshangtulv.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yunshangtulv.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}