在R

时间:2018-03-11 11:49:14

标签: r ggplot2 boxplot

我试图将多个箱形图绘制为单个图形。数据是我进行wilcoxon测试的地方。它应该是这样的

enter image description here

我有四个/五个问题,我想将两组的应答分数绘制成一个盒子图。这应该针对所有问题进行(每个问题有两组)。

我在考虑使用ggplot2。我的数据就像

q1o <- c(4,4,5,4,4,4,4,5,4,5,4,4,5,4,4,4,5,5,5,5,5,5,5,5,5,3,4,4,3,4)
q1s <- c(5,4,4,5,5,5,5,5,4,5,4,4,5,4,5,5,5,5,5,5,5,5,5,5,5,5,4,5,4,4)

q2o <- c(3,3,3,4,3,4,4,3,3,3,4,4,3,4,3,3,4,3,3,3,3,4,4,4,4,3,3,3,3,4)
q2s <- c(5,4,4,5,5,5,5,5,4,5,4,4,5,4,5,5,5,5,5,5,5,5,5,5,5,5,4,3,4,4)

....
.... 

q1表示问题1,q2表示问题2.我还想知道如何根据我的需要对齐这些堆积的箱形图。像一行或两行。

1 个答案:

答案 0 :(得分:3)

这应该让你开始:

不幸的是,您没有提供样本数据的最小示例,因此我将生成一些随机样本数据。

# Generate sample data
set.seed(2017);
df <- cbind.data.frame(
    value = rnorm(1000),
    Label = sample(c("Good", "Bad"), 1000, replace = T),
    variable = sample(paste0("F", 5:11), 1000, replace = T));

# ggplot
library(tidyverse);
df %>%
    mutate(variable = factor(variable, levels = paste0("F", 5:11))) %>%
    ggplot(aes(variable, value, fill = Label)) +
        geom_boxplot(position=position_dodge()) +
        facet_wrap(~ variable, ncol = 3, scale = "free");

enter image description here

您可以分别通过ncol的参数nrowfacet_wrap指定第2个面板布局中的列数和行数。如果您关注?geom_boxplot?facet_wrap,可以找到更多详细信息和示例。

更新1

基于您的样本数据的箱线图没有多大意义,因为您的数据不是连续的。但忽略这一点,你可以做到以下几点:

df <- data.frame(
    q1o = c(4,4,5,4,4,4,4,5,4,5,4,4,5,4,4,4,5,5,5,5,5,5,5,5,5,3,4,4,3,4),
    q1s = c(5,4,4,5,5,5,5,5,4,5,4,4,5,4,5,5,5,5,5,5,5,5,5,5,5,5,4,5,4,4),
    q2o = c(3,3,3,4,3,4,4,3,3,3,4,4,3,4,3,3,4,3,3,3,3,4,4,4,4,3,3,3,3,4),
    q2s = c(5,4,4,5,5,5,5,5,4,5,4,4,5,4,5,5,5,5,5,5,5,5,5,5,5,5,4,3,4,4));

df %>%
    gather(key, value, 1:4) %>%
    mutate(
        variable = ifelse(grepl("q1", key), "F1", "F2"),
        Label = ifelse(grepl("o$", key), "Bad", "Good")) %>%
    ggplot(aes(variable, value, fill = Label)) +
        geom_boxplot(position = position_dodge()) +
        facet_wrap(~ variable, ncol = 3, scale = "free");

enter image description here

更新2

可视化离散数据的一种方法是mosaicplot

mosaicplot(table(df2));

enter image description here

该图显示每valueVariable Label(填充矩形)的计数。有关详细信息,请参阅?mosaicplot