【问题标题】:试图创建几个箱线图
【发布时间】:2022-01-22 10:47:48
【问题描述】:

我正在尝试制作一个包含六个箱线图的情节,

我不确定如何开始,但使用ggplot

我希望连续得到一系列 6 个箱线图:

  1. A5(1,0 和 NA)下三个变量的 3 个箱线图
  2. A9(1、0 和 NA)下变量的 3 个箱线图。
  3. 然后使用来自maf 的相应值填充箱线图。我一直在尝试绘制它们,但我得到的要么只是绘制了 maf 列,要么是灰色板。任何帮助都会非常感谢。
   A5 A9         maf
1   1 NA 9.33843e-01
2   1  1 2.07735e-01
3   1  1 9.28438e-01
4   1  1 7.17963e-01
5   0 NA 1.02935e-01
6   1  1 9.28281e-01
7   1  1 9.28100e-01
8   1  1 2.85170e-01
9   1  1 2.67085e-01
10  1  1 9.28339e-01
11  1  1 5.68334e-02
12  1  1 4.87848e-01
13  1  1 2.22414e-01
14  1  1 3.37689e-01
15  1  1 1.09452e-01
16  1  1 4.71361e-02
17 NA NA 6.87674e-01
18  0  0 5.03323e-01
19  1  1 8.93953e-01
20  1  1 9.13662e-01

编辑------------------------------ ------------ 在使用 e-9 指数的原始数据上运行代码时:

df %>% 
  pivot_longer(
    -maf
  ) %>% 
  ggplot(aes(name, maf, fill=factor(value))) +
  geom_boxplot()

我得到这张图片:

编辑 2--------------------------------------------------------- --------------

structure(list(A5 = c(1L, 1L, 1L, 1L, 0L, 1L), A9 = c(NA, 1L, 
1L, 1L, NA, 1L), maf = c("9.33843e-01", "2.07735e-01", "9.28438e-01", 
"7.17963e-01", "1.02935e-01", "9.28281e-01")), row.names = c(NA, 
6L), class = "data.frame")

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    更新新数据:

    df %>% 
      pivot_longer(
        -maf
      ) %>% 
      ggplot(aes(factor(name), as.numeric(maf), fill=factor(value))) +
      geom_boxplot() +
      scale_y_continuous(labels = function(x) format(x, scientific = FALSE))
    

    第一个答案:

    以长格式提供您的数据,然后使用geom_boxplot()

    library(tidyverse)
    
    df %>% 
      pivot_longer(
        -maf
      ) %>% 
      ggplot(aes(name, maf, fill=factor(value))) +
      geom_boxplot()
    

    数据:

    df <- structure(list(A5 = c(1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, NA, 0L, 1L, 1L), A9 = c(NA, 1L, 1L, 1L, 
    NA, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, NA, 0L, 1L, 1L
    ), maf = c(0.933843, 0.207735, 0.928438, 0.717963, 0.102935, 
    0.928281, 0.9281, 0.28517, 0.267085, 0.928339, 0.0568334, 0.487848, 
    0.222414, 0.337689, 0.109452, 0.0471361, 0.687674, 0.503323, 
    0.893953, 0.913662)), class = "data.frame", row.names = c("1", 
    "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
    "14", "15", "16", "17", "18", "19", "20"))
    

    【讨论】:

    • 谢谢,看起来不错,我的实际数据集有点长,在 y 轴上有点小故障,可能是原始数据仍然是 9.33843e-01 用于 maf。你知道如何在 9.33843e-01 和 0.933843 之间转换吗?
    • 我展示了我使用 9.33843e-01 值得到了什么,而不是作为对原始帖子的编辑
    • 试试options(scipen=999)
    • 我会在专栏上这样做,如何?
    • 在新编辑中添加了上述 dput(head(df)) 的输出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    相关资源
    最近更新 更多