我试图将多个箱形图绘制为单个图形。数据是我进行wilcoxon测试的地方。它应该是这样的
我有四个/五个问题,我想将两组的应答分数绘制成一个盒子图。这应该针对所有问题进行(每个问题有两组)。
我在考虑使用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.我还想知道如何根据我的需要对齐这些堆积的箱形图。像一行或两行。
答案 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");
您可以分别通过ncol
的参数nrow
和facet_wrap
指定第2个面板布局中的列数和行数。如果您关注?geom_boxplot
和?facet_wrap
,可以找到更多详细信息和示例。
基于您的样本数据的箱线图没有多大意义,因为您的数据不是连续的。但忽略这一点,你可以做到以下几点:
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");
可视化离散数据的一种方法是mosaicplot
。
mosaicplot(table(df2));
该图显示每value
每Variable
Label
(填充矩形)的计数。有关详细信息,请参阅?mosaicplot
。