ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

geo差异表达箱式图怎么画?手把手教你用R语言做出出版级图表

geo差异表达箱式图怎么画?手把手教你用R语言做出出版级图表

做生物信息分析的时候,最让人头疼的不是跑流水线,而是最后出图。每次看到老师催稿,我就想摔键盘。特别是那些要发表高分文章的图表,普通的火山图太普通,必须得上点有逼格的。今天我就来聊聊geo差异表达箱式图,这东西看着高大上,其实逻辑很简单。很多新手宝宝一开始总是搞不懂分组,或者坐标轴标签挤在一起看不清。别急,咱们一步步来拆解。

首先,你得有表达矩阵。这个矩阵一定要干净,行名是基因ID,列名是样本名。如果数据里有缺失值,记得先插补或者剔除,不然画图会报错。我上次偷懒没处理缺失值,ggplot直接给我报错,那一刻我的心都凉了半截。所以,数据清洗这一步绝对不能省。

接下来就是重头戏了。我们主要用ggplot2这个包,它灵活又强大。先把数据格式整理成“长格式”,也就是把宽表变成两列,一列是基因,一列是表达量,再加一列分组信息。这一步可以用pivot_longer或者reshape2里的melt函数。注意,分组变量一定要是因子类型factor,不然排序会乱套。我上次就是把分组设成了字符型,结果箱线图顺序随机排列,老师看了一眼就让我重画。那种尴尬谁懂啊。

然后开始画图。核心代码其实就那几句。geom_boxplot()是画箱线图的函数。 aesthetic里把x设为分组,y设为表达量。这个时候你会看到一堆箱子堆在一起。这时候千万别急着停手,要加上geom_jitter()把原始数据点散出来,这样能体现数据的分布情况,显得更真实。光有个箱子太单薄了,加点点进去更有说服力。

这里有个小细节,颜色填充。可以用scale_fill_manual()来自定义颜色,显得专业。主题用theme_bw()或者theme_minimal(),别用默认的灰色背景,太土了。还有,标签要大!标题要清晰。很多小白图做的很漂亮,但是横纵坐标标签字太小,打印出来根本看不清。这就是细节决定成败。

关于geo差异表达箱式图的可视化,还有一个坑就是p值的标注。如果要加显著性差异星星,可以用stat_compare_means()这个函数,它出自ggsignif包。安装这个包的时候可能有点慢,要有耐心。标注线的位置也要注意,不能太靠上把箱子盖住,也不能太低看不清。我自己试了好几次才找到最合适的位置,大概在箱子顶端再往上加一点空间就好。

有些同学可能会问,如果基因太多了怎么办?全画出来图会乱成一团麻。这时候就需要筛选。只画那些p值小于0.05,且|log2FC|大于1的基因。或者你可以选几个关键基因单独拿出来画。这就是所谓的“特写镜头”。这种geo差异表达箱式图的局部特写,往往比全景图更能打动审稿人。

另外,配色也要讲究。不要直接用那种荧光色,看着眼睛疼。用RColorBrewer里的经典配色方案,或者自己调一下透明度。透明度和重叠在一起的效果很有质感。我有时候会在群里看到有人问为什么他的图看起来脏脏的。大概率是背景没去掉,或者线条太粗。调整一下line width,试试0.5或者0.8,效果立刻不一样。

最后导出图片的时候,一定要导出为PDF或者高分辨率的PNG。分辨率至少300 DPI,最好是600 DPI。不要直接截图,那是外行干的事。图片的长宽比也要调整好,一般杂志要求的比例是3:2或者4:3,提前设置好ggsave里的参数,避免后期裁剪失真。

其实画图没有什么捷径,就是多练。我刚开始也被ggplot的图层概念搞晕了,觉得像搭积木一样麻烦。但一旦你理解了“数据+美学+几何对象+统计变换+坐标轴+主题”这个逻辑链条,你会发现它是真的香。当你看到geo差异表达箱式图在屏幕里完美呈现的那一刻,所有的辛苦都值了。那种成就感,真的会上瘾。别怕出错,报错信息就是你的老师。多查文档,多试错,你也能画出让老板惊叹的作品。加油吧,科研人!

返回列表