为昼夜节律数据创建圆形箱线图

问题描述 投票:0回答:1

我正在尝试找到一个 R 代码来绘制如下所示的图(如下所示)。我知道这个数字是用 python 创建的,因为我给创建这个代码的人发了电子邮件,但在与他承诺给我代码的来回沟通 2 个月后,他给我鬼魂了。我还尝试联系我的数据分析核心,并尝试搜索我可以构建的代码,但没有找到任何接近我想要完成的事情,所以我决定询问蜂巢思维。我过去使用过 python,所以我可以管理 python 脚本,但我主要使用 R 来绘制数据。

该图来自出版物- https://pubmed.ncbi.nlm.nih.gov/36599299/ Fig 5a

我计划用来创建绘图的数据是昼夜节律数据。

它包含: 样本 = 三个数据集(BAT、WAT 和体外)。 过程 = 被发现受到昼夜节律调节的过程(即被测量的事物)。 ct = 子流程在昼夜节律中发生的时间,一天有 24 小时,并在 24/0h 结束。

这是我的“BAT”数据样本 - 样品过程ct

 sample   process            ct
    BAT CellCycle   1.140128762
    BAT CellCycle   3.106516768
    BAT CellCycle   3.738113578
    BAT CellCycle   23.44912305
    BAT CellCycle   23.49744379
    BAT CellCycle   23.51422441
    BAT CellCycle   23.33041125
    BAT CellCycle   22.19656322
    BAT CellCycle   22.84183477
    BAT ECM 22.04149961
    BAT ECM 23.45526633
    BAT ECM 23.36802574
    BAT ECM 23.40688727
    BAT ECM 1.732071528
    BAT ECM 1.529777828
    BAT ECM 20.29377917
    BAT Energy  2.19647636
    BAT Energy  4.177766894
    BAT Energy  2.624942744
    BAT Energy  1.633080723
    BAT Energy  2.25815373
    BAT Energy  22.52527935
    BAT Energy  21.844178
    BAT Energy  1.44484992
    BAT Energy  1.710318176
    BAT Energy  1.721398481
    BAT Energy  5.0700794
    BAT Energy  3.252122282
    BAT Energy  19.69284419
    BAT Energy  2.521538024
    BAT Energy  2.309621407
    BAT Energy  1.979057875
    BAT Energy  1.747326389
    BAT Energy  1.620003554
    BAT Energy  4.512535826
    BAT Energy  19.48505391
    BAT Energy  3.96613478

每个样本最终将有一个图(3 个图)显示每个过程的相位分布,并描述中值和 IQR。

python r time-series boxplot
1个回答
0
投票

仅凭一小部分数据样本很难知道,但以下是如何使用

ggplot
在 R 中做到这一点的基本原理:

library(tidyverse)

df %>%
  mutate(ct = ifelse(ct > 12, ct - 24, ct)) %>%
  ggplot(aes(as.numeric(factor(process)), ct, fill = process)) +
  geom_vline(xintercept = 1:3, linewidth = 8, color = 'gray92') +
  stat_boxplot(geom = 'errorbar', width = 0.5, aes(color = process)) +
  geom_boxplot(width = 0.5, linewidth = 0, outlier.colour = NA) +
  stat_boxplot(geom = 'errorbar', width = 0.5,
               aes(ymax = after_stat(middle), ymin = after_stat(middle))) +
  geom_hline(yintercept = c(-12, -8, -4, 0, 4, 8), linetype = 5,
             alpha = 0.2) +
  
  annotate('rect', xmax = 0.5, xmin = -Inf, ymin = -Inf, ymax = Inf,
           fill = 'white') +
  annotate('text', x = -1, y = 0, label = 'BAT', fontface = 2, size = 4) +
  coord_polar(theta = 'y', start = pi) + 
  theme_void() +
  scale_x_continuous(limits = c(-1, 3.25)) +
  scale_y_continuous(limits = c(-12, 12), breaks = -12:11,
                     labels = ~sprintf('%02d:00', ifelse(.x < 0, .x + 24,.x))) +
  theme(axis.text.x = element_text(),
        legend.position = 'top') +
  scale_color_manual(values = c('#ca6c28', '#aa2a25', '#538335')) +
  scale_fill_manual(values = c('#ca6c28', '#aa2a25', '#538335')) 

© www.soinside.com 2019 - 2024. All rights reserved.