跟着Nature子刊学习半小提琴半箱线图的绘制

文摘   2024-07-28 17:23   德国  

如何根据Nature子刊上的优美绘图进行学习

在科学研究中,图形和插图是传达复杂信息的重要工具。Nature及其子刊上常常发表高质量的图形,这些图形不仅美观,而且信息量丰富。

本期,我们将根据Nature Communication上一张半小提琴半箱线图的学习和复现,让大家可以更好地理解和借鉴Nature子刊上的优美绘图,从而提升自己的绘图的实用技巧。

Nature子刊:10.1038/s41467-022-28668-z

绘图介绍

箱线图(Box Plot)和小提琴图(Violin Plot)都是数据可视化工具,用于展示一组数据的分布情况。

箱线图

箱线图是一种标准化的显示数据分布特征的方法,它能够展示数据的最小值、第一四分位数(Q1)、中位数(Q2)、第三四分位数(Q3)和最大值。箱线图通常包括以下元素:

  • 箱体:表示数据的中间50%(IQR,即四分位距)。
  • 中位数线:箱体中的水平线,表示数据的中位数。
  • 须:从箱体延伸出来的线,表示数据的最小值和最大值,但排除了异常值。
  • 异常值点:通常用点表示,位于须之外的数据点,被认为是异常值或离群点。
箱线图解读

箱线图的优点在于能够快速识别数据的集中趋势、离散程度以及异常值。

小提琴图(Violin Plot)

小提琴图是一种箱线图的变体,它结合了箱线图和核密度图的特点。小提琴图在箱线图的基础上,增加了数据的核密度估计,使得数据的分布形状更加直观。小提琴图的特点包括:

  • 核密度估计:图形的宽度表示数据的密度,形状类似小提琴,因此得名。
  • 中位数:通常用一条线或点表示。
  • 数据分布:图形的宽度变化可以直观地展示数据的分布情况,包括对称性、多峰性等。
小提琴图解读

小提琴图的优点在于提供了更多关于数据分布的信息,尤其是当数据分布复杂或有多个峰值时。

今天我们来看一下如何使用R绘制箱线图和小提琴图

可视化展示

示例一:箱线图+小提琴图
示例二:箱线图+半小提琴图+半散点图

代码

示例一的代码:

#下载并调用所需包
if(!require(ggpubr))install.packages("ggpubr")
if(!require(reshape2))install.packages("reshape2")
library(ggpubr)
library(reshape2)

# 读取CSV文件
setwd("你自己的工作目录")
data <- read.csv("你自己的数据.csv")

# 将数据转换为长格式,适合绘制小提琴图
data1 <- melt(data, id.vars = "type")

# 创建小提琴图并赋值给对象p

p <-ggviolin(data1, x="variable", y="value"
           fill="type",#填充
           palette =c("#B3CDE3","#DECBE4","#F7E5C3"),#设置颜色
           add ="boxplot",#添加箱线图
           xlab = F, #不显示x轴的标签
           legend = "right"#图例显示在右侧
  )


p <-ggviolin(data1, x="variable", y="value",
           color = "type",
           fill="type",
           palette =c("#B3CDE3","#DECBE4","#F7E5C9"),#设置颜色
           add = "boxplot",#添加箱线图
           add.params = list(color="white"),#设置箱线图边颜色
           xlab = F, #不显示x轴的标签
           legend = "right"#图例显示在右侧
  )

# 保存图为PNG文件,尺寸为600x600像素
ggsave("箱线图1.png", plot = p, width = 12, height = 6, units = "in", dpi = 600)

#保存绘图
install.packages("eoffice")
library(eoffice)
topptx(filename="1.pptx",height = 6,width = 9)
示例一:箱线图+小提琴图

示例二的代码:

#下载并调用所需包
if(!require(ggplot2))install.packages("ggplot2")
if(!require(gghalves))install.packages("gghalves")
library(ggplot2)
library(gghalves)
# 读取数据
setwd("你自己的工作目录")
data <- read.csv("你自己的数据.csv")

# 绘图
p <- ggplot(data, aes(x = Species, y = Sepal.Length, fill = Species, color = Species)) +
  scale_fill_manual(values = c("#E69F00","#D55E00""#56B4E9""#009E73","#F0E442")) +
  scale_colour_manual(values = c("#E69F00""#D55E00","#0072B2""#009E73""#F0E442"))

# 先画一半小提琴图
p1 <- p + geom_half_violin(
  position = position_nudge(x = 0.1, y = 0),
  side = 'R', adjust = 1.2, trim = FALSE, color = NA, alpha = 0.6
)

# 添加散点图
p2 <- p1 + geom_half_point(
  position = position_nudge(x = -0.35, y = 0), size = 3, shape = 19, range_scale = 0.5, alpha = 0.6
)

# 添加箱线图
p3 <- p2 + geom_boxplot(
  outlier.shape = NA,  # 隐藏离群点
  width = 0.1,
  alpha = 0.8
)

# 设置主题和字体
windowsFonts(A = windowsFont("Times New Roman"),
             B = windowsFont("Arial"))

p4 <- p3 + theme_light() + theme(panel.grid = element_blank()) +
  theme(
    axis.ticks.length = unit(-0.25, "cm"),
    axis.text.x = element_text(margin = unit(c(0.5, 0.5, 0.5, 0.5), "cm")),
    axis.text.y = element_text(margin = unit(c(0.5, 0.5, 0.5, 0.5), "cm")),
    panel.grid.major = element_line(linetype = "dotted",color = "lightgray", size = 0.5),  # 添加背景网格虚线
    text = element_text(family = "A", size = 20)
  )
p4
#图形转置
# p5<-p3+coord_flip()
# p5
#设置主题和字体
#设置新罗马字体
# 保存图形
ggsave(
  filename = "Groundwater.png",  # 保存的文件名称。通过后缀来决定生成什么格式的图片
  width = 9,                     # 宽
  height = 5,                    # 高
  units = "in",                  # 单位
  dpi = 600                      # 分辨率DPI
)

#导出图片
library(eoffice)
topptx(filename="Leach.pptx",height = 6,width = 9)
示例二:箱线图+半小提琴图+半散点图


本文作者:李家旭

现在:


长按扫码关注:科研生信充电宝


10元赞赏本文,即喜欢作者~


即可直接解锁:


《跟着Nature子刊学习半小提琴半箱线图的绘制》对应资源哦~


看到这里你还不心动吗?


赶紧关注、转发、点赞、分享,领取你的专属福利吧~



好啦,以上就是今天推文的全部内容啦!


版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本公众号不拥有所有权,也不承担相关法律责任。

如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:kysxcdb@163.com 进行举报,一经查实,本公众号将立刻删除涉嫌侵权内容。

BIOINFOR

微信号|科研生信充电宝

 · BIOINFOR · 


永远相信美好的事情

即将发生


科研生信充电宝
介绍科研;介绍统计;介绍生信;
 最新文章