r - ggplot2 分组箱线图不会将不同时间点的组分开
问题描述
我有一个包含两组的简单数据集,每组在 4 个不同的时间点都有一个值。我想将此数据集显示为随时间分组的箱线图,但 ggplot2 不会分隔时间点。
这是我的数据:
matrix
Replicate Line Day Treatment X A WT Marker Proportion
1 C 10 low NA HuCHuD_Pos 8.62
2 C 10 low NA HuCHuD_Pos NA
1 C 18 low NA HuCHuD_Pos 30.50
3 C 18 low NA HuCHuD_Pos NA
2 C 18 low NA HuCHuD_Pos NA
1 C 50 low NA HuCHuD_Pos 26.10
2 C 50 low NA HuCHuD_Pos 31.90
1 C 80 low NA HuCHuD_Pos 12.70
2 C 80 low NA HuCHuD_Pos 26.20
1 C 10 normal NA HuCHuD_Pos NA
2 C 10 normal NA HuCHuD_Pos 17.20
1 C 18 normal NA HuCHuD_Pos 3.96
2 C 18 normal NA HuCHuD_Pos NA
1 C 50 normal NA HuCHuD_Pos 25.60
2 C 50 normal NA HuCHuD_Pos 17.50
1 C 80 normal NA HuCHuD_Pos 19.00
NA C 80 normal NA HuCHuD_Pos NA
这是我的代码:
matrix = as.data.frame(subset(data.long, Line == line_single & Marker == marker_single & Day != "30"))
pdf(paste(line_name_single, marker_name_single, ".pdf"), width=10, height=10)
plot <-
ggplot(data=matrix,aes(x=Day, y=Proportion, group=Treatment, fill=Treatment)) +
geom_boxplot(position=position_dodge(1))
print(plot)
dev.off()
我做错了什么?
我想要的是
我得到什么
非常感谢您的帮助!
干杯,宝拉
解决方案
编辑:
这就是您问题的最小可重现示例的样子:
matrix <- structure(list(Day = c(10L, 10L, 18L, 18L, 18L, 50L, 50L, 80L, 80L, 10L, 10L, 18L, 18L, 50L, 50L, 80L, 80L),
Treatment = c("low", "low", "low", "low", "low", "low", "low", "low", "low", "normal", "normal", "normal", "normal", "normal", "normal", "normal", "normal"),
Proportion = c(8.62, NA, 30.5, NA, NA, 26.1, 31.9, 12.7, 26.2, NA, 17.2, 3.96, NA, 25.6, 17.5, 19, NA)),
class = "data.frame", row.names = c(NA, -17L))
factor
使用“离散化”变量的建议答案Day
:
ggplot(data=matrix,aes(x=factor(Day), y=Proportion, fill=Treatment)) +
geom_boxplot(position=position_dodge(1)) +
labs(x ="Day")
说明:如果我们将连续变量传递给箱线图的“x”轴,ggplot2
则不会将该轴转换为离散变量。因此,在缺少“分组”变量的情况下,我们只能得到一个框。但是如果我们将变量转换为离散的东西,比如一个因子、一个字符串或一个日期,我们就会得到想要的行为。
此外,当您使用此处dput
描述的技术之一时,查找和测试答案比尝试使用问题中的数据描述更容易(或者至少我不知道如何加载该示例数据)
data.frame
PS我认为命名类'矩阵'的变量有点令人困惑,因为matrix
它是R中自己的数据类型......;)
推荐阅读
- django - 我使用了两个相互连接的 ChainedForeignKey 字段,但它们没有。为什么?
- python - 有没有办法让 TextInput 框自动搜索地址列表?
- google-apps-script - 如何将工作表的特定部分作为电子邮件发送?
- php - 店面功能中缺少 WooCommerce 功能
- react-native - React Native 无法访问 Net Core Web Api
- python - 如何过滤元组列表(或列表列表)以删除= 0的所有值?
- javascript - 如何从对象中删除数组?
- sql - Oracle:从列中选择总和作为两者:YTD(年初至今),Fiscal YTD
- angular - 以角度在许多组件中共享功能的最佳解决方案
- vue.js - Heroku 在部署 MEVN 应用程序时出现构建错误,为什么 heroku 显示 babel-loader 和 vue-loader 错误?