【发布时间】:2023-03-27 16:23:01
【问题描述】:
我有以下列的数据:批次、子批次、大小、数据。我有多个批次,每个批次可以有多个子批次。每个子批次的大小为 1 到 4。
我使用以下代码为此数据创建了箱线图:
df <-
readXL("Z:/R_Files/example.xlsx",
rownames=FALSE, header=TRUE, na="", sheet="Sheet1",
stringsAsFactors=TRUE)
x11()
par(mar=c(10.1, 5.1, 4.1, 2.1))
boxplot(data ~ size*sublot*lot,
xlab="", ylab="Data", main="Data by Size, Sublot, Lot",
las=2,
data=df)
title(xlab='Size.Sublot.Lot', line=9)
我想使用 boxfill 命令根据批次#为每个箱线图着色。我见过两种解决方案:
- 创建一个矢量并明确指定要使用的颜色,例如colr = c("red", "red", "red", .... "green", "green", "green", ... "blue").此解决方案的问题在于,它需要我先验地知道 df 中的手数以及需要重复颜色的次数。
- 使用“ifelse”语句。这个解决方案的问题是 (a) 我需要知道批次的数量以及 (b) 我需要创建多个嵌套的 ifelse 语句。
我更愿意创建一个“动态”解决方案,该解决方案根据我文件中的批次条目数创建颜色矢量。
我已尝试创建:
uniqlot <- unique(df$lot)
colr <- palette(rainbow(length(uniqlot)))
但我卡住了,因为 colr 向量中的条目对于 size.sublot.lot 的唯一组合的数量不重复。注意:我希望 ABC 批次的所有箱线图都用一种颜色着色,DEF 批次的所有箱线图都用另一种颜色着色,等等。
我附上一张未着色箱线图的图片。 Uncolored Boxplot
原始数据(example.xlsx)可通过以下链接访问: example.xlsx
【问题讨论】:
-
如果您向reproducible example 提供示例输入数据(这不是您机器上的私人文件),则更容易提供帮助。有关如何执行此操作的提示,请参阅提供的链接。
-
非常感谢您的帮助和指点。我想知道如何放置 xlsx 文件。我已将它放在带有可访问链接的 Google 驱动器上。