只需三分钟!!!小果教你使用R语言绘制散点图+边际图!!






只需三分钟!!!小果教你使用R语言绘制散点图+边际图!!

小果  生信果  2023-10-21 19:00:47

小伙伴们在绘制散点图时候总感觉散点图有些单调,但是不知道加什么东西,有时候散点图横坐标需要柱状图来表示样本的大小来结合散点图一起分析,有的小伙伴直接绘制了两张图这样一来图片又多又不好分析,在这里小果教大家一种方法可以将散点图周上面添加边际图或者说,我们还可以绘制柱状图,小提琴图放在散点图中的边际上,让我们的信息看起来更完整。下面跟着小果去学习吧

公众号后台回复“111″,领取代码,代码编号:231020

这里我们需要用到ggplot2这个包,去调整图片中的细节,以及ggExtra和ggstatsplot,我们需要使用这两个包的函数去设置边际中的信息。

library(ggplot2) #加载ggplot2包library(ggExtra)library(ggstatsplot)#还需要这两个包需要用到其中的函数去绘制我们的散点图中的边际图,小伙伴没有的要去下载

这里小果使用经典的数据集iris去演示,小伙伴可以根据这个数据集形式去设置自己数据集:

接下来我们使用ggplot2绘制散点图,然后利用ggExtea包中的函数添加边际的柱形图:

首先我们先绘制基础的散点图:

p1 <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) +  geom_point(color = "#00AFBB")p1

就是普普通通的散点图;

让我们去添加一些细节:

添加我们的横纵数轴线,还有添加R2和P值

p2 <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) +  geom_point(color = "#00AFBB") +  geom_smooth(method="lm", se=T) +  geom_hline(yintercept = 3, linetype = "dashed", color = "blue") +  geom_vline(xintercept = 6, linetype = "dashed", color = "red") +  annotate("text", x=4.5, y=4.25, parse=TRUE,
label="r^2 == 0.0138 * ' p-value = 0.1529' ")
p2

这样一来我们图片信息就是多了很多,看起来信息清晰多了

接下来就是我们的重头戏,添加边际条形图。

这里呢使用ggMarginal添加,Type可以选参数,histogram, density 和 boxplot.

这里就是选择边际图的形状,小伙伴可以自行去选择。

然后我们去绘制图片:,这里使用ggMarginal(,这个包自带的绘制图片的函数

ggMarginal(p2, type = "histogram", fill = "#00AFBB")

是不是不一样了呢,周围的边际图出来了,但是还是看不出有多少明显的数据,

感觉还少了点细节,我们继续去学习。

接下来我们使用ggstatsplot去绘制边际的散点图

这里直接使用ggstatsplot中的ggscatterstats函数绘制。

library(ggstatsplot)
ggscatterstats(
data = iris, x = Sepal.Length, y = Sepal.Width, xlab = "Sepal Length", ylab = "Sepal Width", marginal = TRUE, marginal.type = "densigram", margins = "both", xfill = "blue", # 分别设置颜色 yfill = "#009E73", title = "Relationship between Sepal Length and Sepal Width", messages = FALSE)#这里我们还需要调用一下R包ggstatsplot,否则就会报错

这里小果提醒大家一下,在上述参数中,其中marginal.type可选 histograms,boxplots,density,violin,densigram (density + histogram,可以绘制许多不同样式的托,小伙伴可自行尝试效果。

这样一来图片中信息多了很多,比单调的散点图信息多了许多,小伙伴有没有心动呢,

这就是文献中常见的带边际图的散点图,小伙伴们要多多了解参数的含义,这样才能设置自己想要的图片。

不过小果给大家推荐一下参数用来绘制我们的边际图,许多参数的意义就明白了~

下期将为你带来更多R语言的骚操作技巧~

往期推荐

1.搭建生信分析流水线,如工厂一样24小时运转Snakemake——进阶命令
2.比blast还优秀的序列比对工具?HMMER来了
3.对单细胞分析毫无头绪?让popsicleR领你入门
4.小果带你绘制ROC曲线评估生存预测能力
5.软件包安装、打怪快又好,1024G存储的生信服务器;还有比这更省钱的嘛!!!