利用R分别绘制配对连线散点图、云雨图、山脊图

这篇具有很好参考价值的文章主要介绍了利用R分别绘制配对连线散点图、云雨图、山脊图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

       大家好,我是带我去滑雪!

       精美的科研绘图总会给人眼前一亮,今天学习利用R绘制多组配对连线散点图、云雨图、山脊图,这三幅图最近都曾出现在Nature Communications (IF 16.6)中,比如配对连线散点图,如下所示:

利用R分别绘制配对连线散点图、云雨图、山脊图,机器学习之R,r语言,开发语言

        因此值得一学,方便后续用于自己的科研论文中,下面逐一进行学习。

目录

1、多组配对连线散点图

(1)什么是配对连线散点图?

(2)应用场景

(3)代码实现

2、云雨图

(1)什么是云雨图?

(2)运用场景

(3)代码实现

3、山脊图

 (1)什么是山脊图?

(2)应用场景

(3)代码实现


1、多组配对连线散点图

(1)什么是配对连线散点图?

       多组配对连线散点图(Paired Line Scatter Plot)是一种用于可视化配对变量之间关系的图表。这种图表通过在图中连接配对点之间的线段,展示两个变量在不同配对观测值之间的关联性。在配对设计的研究中,每个观测都有两个相关的变量的测量结果。这些变量可能是在相同个体或实验单位上测量的两个不同指标,或者是对同一组样本在不同时间点上取得的测量结果。配对连线散点图可用于可视化这两个变量之间的关系,并显示出配对观测之间的连接。

(2)应用场景

       多组散点图结合配对连线和差异分析在很多领域中都可以应用,例如:

       在生物医学研究中,可以使用多组散点图和配对连线来探索不同组别或不同时间点下的相关性和趋势。例如,可以比较药物治疗前后的指标变化,将每个个体的两个时间点的测量结果绘制成散点图,并使用配对线来表示个体之间的相关性。此外,可以使用差异分析方法如配对 t 检验或重复测量方差分析来评估两个时间点之间的差异。

       在执行实验/介入研究研究中,可以使用多组散点图和配对连线来比较不同实验组或处理组之间的结果差异。例如,在药物治疗研究中,可以比较不同药物组或剂量组的治疗效果。绘制每个个体在不同组别下的测量结果散点图,并使用配对连线来表示个体之间的配对关系。然后,使用差异分析方法如方差分析(ANOVA)来评估组别之间的差异。

       在教育研究中,可以使用多组散点图和配对连线来比较教学干预对学生学业成绩的影响。例如,可以比较不同教学方法或教学环境下的学生成绩。绘制每个学生在不同条件下的成绩散点图,并使用配对连线表示每个学生的配对关系。然后,使用差异分析方法如配对 t 检验或重复测量方差分析来评估教学干预的效果。

(3)代码实现

install.packages("tidyverse")
install.packages("reshape2")
install.packages("ggthemes")
install.packages("rstatix")

# 生成示例数据
dt = data.frame(sample = paste0('sample',1:25),
                A = runif(25,5,368),
                B = runif(25,100,400),
                C = runif(25,1,200))
head(dt)
# 长宽转换
library(tidyverse)
library(reshape2)
dt_long <- melt(dt,
                measure.vars = c("A","B",'C'),
                variable.name = "group",
                value.name = "value")
# 绘图
library(ggplot2)
library(ggthemes)
head(dt_long)
# 绘制散点图+配对连线
p1 <- ggplot(dt_long,aes(group, value, fill = group))+
  geom_line(aes(group = sample),
            size = 0.5)+#图层在下,就不会显示到圆心的连线
  geom_point(shape = 21,
             size = 3,
             stroke = 0.6,
             color = 'black')+
  scale_x_discrete(expand = c(-1.05, 0)) + # 坐标轴起始
  scale_fill_manual(values = c('#800040','#fc6666','#108080'))+
  geom_rangeframe() + # 坐标轴分离
  theme_tufte() +
  theme(legend.position = 'none',  # 标签字体等
        axis.text.y = element_text(size = 14,
                                   face = "bold"),
        axis.text.x = element_text(size =14,
                                   face = "bold"),
        axis.title.y = element_text(size = 15, 
                                    color = "black",
                                    face = "bold")) +
  labs(x = ' ', 
       y = 'Values')

p1

# 为了绘制原图的差异形式 手动计算p值
library(rstatix)
result = t_test(dt_long,value~group)  
head(result)

# 添加显著性标记
p2 <- p1 +  
  coord_cartesian(clip = 'off',ylim = c(0,500))+ 
  theme(plot.margin = margin(1,0,0,0.5,'cm'))+ 
  annotate('segment',x=1,xend=1.99,y=510,yend=510,color='black',cex=.6)+
  annotate('segment',x=1,xend=1,y=505,yend=515,color='black',cex=.6)+
  annotate('segment',x=1.99,xend=1.99,y=505,yend=515,color='black',cex=.6)+
  annotate('segment',x=2.01,xend=3,y=510,yend=510,color='black',cex=.6)+
  annotate('segment',x=2.01,xend=2.01,y=505,yend=515,color='black',cex=.6)+
  annotate('segment',x=3,xend=3,y=505,yend=515,color='black',cex=.6)+
  annotate('segment',x=1,xend=3,y=530,yend=530,color='black',cex=.6)+
  annotate('segment',x=1,xend=1,y=525,yend=535,color='black',cex=.6)+
  annotate('segment',x=3,xend=3,y=525,yend=535,color='black',cex=.6)+
  annotate("text", x = 1.5, y = 520, label ="p = 0.080",size = 6)+
  annotate("text", x = 2.5, y = 520, label ="p = 0.129",size = 6)+
  annotate("text", x = 2, y = 540, label ="p = 0.0004",size = 6)
p2
ggsave('绘图.pdf',p2,width = 8,height = 7)

输出结果:

利用R分别绘制配对连线散点图、云雨图、山脊图,机器学习之R,r语言,开发语言

2、云雨图

(1)什么是云雨图?

       云雨图(Cloud and Rain Plot)是一种数据可视化图表,被用于展示不同组别或条件下的数据分布和差异。它是一种变种的多组散点图,结合了散点图和柱状图的特点,以形象地呈现数据的分布情况。通常,对于两组或两组以上的数据展示其特征和比较不同组之间的大致差异时,我们会选择箱线图或箱线图加添加扰动的散点图进行展示。但是,由于箱线图和散点图本身的局限,例如不能提供关于数据分布偏态和尾重程度的精确度量、对于批量比较大的数据批,反应的形状信息更加模糊和用中位数代表总体评价水平有一定的局限性等,人们亟需对数据的信息进行更全面可视化的图形。在这种背景下,云雨图也就孕育而成。顾名思义,云雨图即使“云”(小提琴图半边)和“雨”(散点图),外加箱线图的一种联合体。它通过中位数和置信区间很好地提供了原始数据、概率分布和“一目了然的统计推断”的概述。

      云雨图由两个部分组成:云部分和雨部分。在云部分:使用散点图来展示数据的分布情况。每一个散点代表一个数据点,它们根据 x 轴上的数值来水平分布,并根据 y 轴上的数值来显示垂直位置。云部分的目的是展示数据的分布情况和密度。在雨部分使用柱状图来展示不同组或条件下的数据统计量,通常是均值或中位数。每个柱状图代表一个组别或条件,其高度表示该组别或条件的数据统计量。雨部分的目的是比较不同组别或条件之间的数据差异。

        云雨图的优点是同时展示了数据的分布和差异。云部分提供了对数据分布的直观了解,可以看出数据的聚集程度和离群值的存在。雨部分则强调了组别或条件之间的数值差异,帮助我们理解和比较不同情况下的数据特征。

(2)运用场景

       云雨图适用于多种运用场景,其中一些示例包括:

        第一,在医学研究中,云雨图可用于展示不同患者群体或治疗方案之间的数据分布和差异。例如,在药物研究中,可以使用云雨图展示不同剂量组中患者的生物标志物水平,同时比较各组之间的数据差异。

        第二,在社会科学研究中,云雨图可用于比较不同群体(例如性别、年龄组等)之间的数据分布和差异。例如,在心理学研究中,可以使用云雨图展示不同性别群体在某一心理测量指标上的得分分布,以及性别群体之间的差异。

        第三,在市场调研中,云雨图可用于比较不同市场细分或消费者群体之间的数据分布和差异。例如,对于某种产品或服务的用户调研数据,可以使用云雨图展示不同年龄段或地理位置的用户在关键指标上的得分分布,并比较不同群体之间的数据差异。

       第四,在教育评估中,云雨图可用于比较不同学校、班级或教育介入项目之间的学业成绩或评估指标的数据分布和差异。例如,可以使用云雨图展示不同学校在某一学科考试成绩上的分布,并比较各学校之间的差异。

      第五,在质量控制中,云雨图可用于比较不同生产批次或供应商之间的产品质量数据分布和差异。例如,在制造业中,可以使用云雨图展示不同供应商提供的产品在某项指标上的测试结果分布,并比较各供应商之间的数据差异。

(3)代码实现

install.packages("gghalves")
library(ggplot2)
library(gghalves)

dat <- iris[, c(2, 5), drop = F]
dat$Group <- rep(1:(nrow(dat)/3), times = 3)
head(dat, 5)

## 绘制“云朵” - 小提琴图的左半边
ggplot(dat, aes(x = Species, y = Sepal.Width, fill = Species))+
  geom_half_violin(side = "r", trim = F, color = NA)+
  scale_fill_manual(limits = base::unique(dat$Species),
                    values = rainbow(3))

## 添加“雨滴” - 抖动散点图
ggplot(dat, aes(x = Species, y = Sepal.Width, fill = Species))+
  geom_half_violin(side = "r", trim = F, color = NA, alpha = 0.75,
                   position = position_nudge(x = 0.15, y = 0))+
  geom_point(aes(x = as.numeric(Species) - 0.15, y = Sepal.Width, color = Species),
             position = position_jitter(width = 0.05, seed = 2021), size = 0.8, shape = 19)+
  scale_fill_manual(limits = base::unique(dat$Species),
                    values = rainbow(3))

## 添加箱线图,并更改为经典主题背景
ggplot(dat, aes(x = Species, y = Sepal.Width, fill = Species))+
  geom_half_violin(side = "r", trim = F, color = NA, alpha = 0.75,
                   position = position_nudge(x = 0.15, y = 0))+
  geom_point(aes(x = as.numeric(Species) - 0.15, y = Sepal.Width, color = Species),
             position = position_jitter(width = 0.05, seed = 2021), size = 0.8, shape = 19)+
  geom_boxplot(width = 0.1, alpha = 0.75)+
  scale_fill_manual(limits = base::unique(dat$Species),
                    values = rainbow(3))+
  theme_classic()


## 翻转图形
ggplot(dat, aes(x = Species, y = Sepal.Width, fill = Species))+
  geom_half_violin(side = "r", trim = F, color = NA, alpha = 0.75,
                   position = position_nudge(x = 0.15, y = 0))+
  geom_point(aes(x = as.numeric(Species) - 0.15, y = Sepal.Width, color = Species),
             position = position_jitter(width = 0.05, seed = 2021), size = 0.8, shape = 19)+
  geom_boxplot(width = 0.1, alpha = 0.75)+
  scale_fill_manual(limits = base::unique(dat$Species),
                    values = rainbow(3))+
  coord_flip()+
  theme_classic()
p2=ggplot(dat, aes(x = Species, y = Sepal.Width, fill = Species))+
  geom_half_violin(side = "r", trim = F, color = NA, alpha = 0.75,
                   position = position_nudge(x = 0.15, y = 0))+
  geom_point(aes(x = as.numeric(Species) - 0.15, y = Sepal.Width, color = Species),
             position = position_jitter(width = 0.05, seed = 2021), size = 0.8, shape = 19)+
  geom_boxplot(width = 0.1, alpha = 0.75)+
  scale_fill_manual(limits = base::unique(dat$Species),
                    values = rainbow(3))+
  coord_flip()+
  theme_classic()

ggsave('绘图2.pdf',p2,width = 8,height = 7)

输出结果:

利用R分别绘制配对连线散点图、云雨图、山脊图,机器学习之R,r语言,开发语言

3、山脊图

 (1)什么是山脊图?

       山脊图(Ridge Plot)是一种数据可视化图表,用于展示多个核密度估计曲线(Kernel Density Estimation, KDE)的堆叠。它被用于可视化多个分布的形状和相对关系,尤其在比较不同组别或条件下的数据分布时非常有用。在山脊图中,每个核密度估计曲线代表一个组别或条件。这些曲线在水平轴上对齐,并根据其相对密度进行堆叠,形成一种山脊状的图像。曲线的高度表示对应组别的相对密度或频率。

       山脊图通常使用半透明的颜色来绘制曲线,使得堆叠的部分可以透过看到下方的曲线,以显示整体和局部的分布情况。同时,可以通过曲线的颜色来区分不同组别或条件。

(2)应用场景

       第一,在统计分析和数据探索中,山脊图可以展示不同样本、组别或条件下的数据分布情况,帮助研究人员观察和比较分布的形状、峰值位置和相对密度。

       第二,在机器学习和分类任务中,山脊图可用于可视化不同类别的特征变量分布,帮助理解类别之间的相似性和差异性,从而指导特征选择和模型建立。

       第三,在市场研究和用户行为分析中,山脊图可用于展示不同用户群体或市场细分的行为数据分布,例如购买行为、用户偏好等,以辅助市场定位和目标用户群体的识别。

(3)代码实现

install.packages("ggridges")
install.packages("cols4all")
library(ggridges)
library(ggplot2)
library(cols4all)

df <- iris
df
p <- ggplot(data = df,
            aes(x = Sepal.Length, y = Species, fill = Species)) +
  geom_density_ridges() +
  theme_classic()
p
ggsave('绘图3.pdf',p,width = 8,height = 7)

输出结果:

利用R分别绘制配对连线散点图、云雨图、山脊图,机器学习之R,r语言,开发语言

需要数据集的家人们可以去百度网盘(永久有效)获取:

链接:https://pan.baidu.com/s/1E59qYZuGhwlrx6gn4JJZTg?pwd=2138
提取码:2138 


更多优质内容持续发布中,请移步主页查看。

若有问题可邮箱联系:1736732074@qq.com 

博主的WeChat:TCB1736732074

   点赞+关注,下次不迷路!文章来源地址https://www.toymoban.com/news/detail-572516.html

到了这里,关于利用R分别绘制配对连线散点图、云雨图、山脊图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • R语言绘制矩阵散点图

    2024年02月15日
    浏览(40)
  • plt绘制箱型图+散点图

    注意: 代码中有一个参数 zorder=1 ,这个参数是控制图层顺序的。如果不添加,散点会被箱型图遮盖。

    2024年02月12日
    浏览(46)
  • excel绘制折线图或者散点图

    假如现在通过代码处理了一批数据,想看数据的波动情况,是不是还需要写个pyhon代码,读取文件,绘制曲线,看起来也简单,但是还有更简单的方法,就是直接生成csv文件,csv文件就是excel格式的,然后在excel中,选中数据,生成折线图,而且图还能拷贝到word和PPT中,都是矢

    2024年02月15日
    浏览(38)
  • python绘制散点图|散点大小和颜色深浅由数值决定

    往期python绘图合集: python绘制简单的折线图 python读取excel中数据并绘制多子图多组图在一张画布上 python绘制带误差棒的柱状图 python绘制多子图并单独显示 python读取excel数据并绘制多y轴图像 python绘制柱状图并美化|不同颜色填充柱子 python随机生成数据并用双y轴绘制两条带误差

    2024年02月13日
    浏览(40)
  • 分享一下如何使用echarts绘制散点图

    今天我来分享一下如何使用echarts绘制散点图 首先,我们需要引入echarts库。可以通过以下代码在HTML文件中引入: 或者引入下载好的js文件: 然后,我们需要准备好数据。散点图需要至少两个数据集,分别表示x轴和y轴的坐标。我们可以使用JavaScript数组来存储数据。 接下来,

    2024年02月06日
    浏览(40)
  • 添加数据维度并使用Python绘制5D散点图

    大家好,散点图通常用于比较2个不同特征以确定它们之间的关系,散点图也可以添加更多的维度来反映数据,例如使用颜色、气泡大小等。在本文中,将介绍如何绘制一个五维的散点图。 数据集:  让我们从二维开始,简单地看一下 Healthy_life_expectancy_at_birth 和 Log_GDP_per_ca

    2024年02月12日
    浏览(45)
  • MATLAB | 如何绘制这样的描边散点图?

    最近略忙可能更新的内容会比较简单,见谅哇,今日更新内容: 看到gzh BYtools科研笔记 (推荐大家可以去瞅瞅,有很多有意思的图形的R语言复现!!)做了这样一张图: 感觉很有意思,但是作者是使用 R语言+Adobe illustrator 进行完成的,于是俺就想试试能不能用 MATLAB来进行完成

    2024年02月14日
    浏览(39)
  • 使用R语言绘制散点图矩阵图

    使用R语言绘制散点图矩阵图 散点图矩阵图(Scatterplot Matrix)是一种常用的数据可视化工具,用于显示多个变量之间的相互关系。在R语言中,可以使用 pairs() 函数和 ggpairs() 函数来创建散点图矩阵图,它们提供了灵活的选项和美观的输出。 pairs() 函数是R语言中的基本函数,用

    2024年02月04日
    浏览(43)
  • Python plt.plot绘制空心圆散点图

    使用python plot绘制折线图,如果有需要空心圆的点,或者空心符号的可以参考: 设置后显示如下图片

    2024年02月15日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包