我知道其他人问过这个问题,我已经阅读并尝试了人们提供的答案,但我仍然没有运气。我的 R 素养还不够高,也许我组织数据的方式有问题?
我有两个群体,a 和 b,我想在同一个箱线图上比较叶子长度和叶子宽度。我可以单独制作 qplot,但不能一起制作 qplot。
data <- read.csv("Leaf.csv", header=TRUE)
data$AORB <- as.factor(data$AORB)
library(ggplot2); library(plyr)
qplot(mapping=aes(x=AORB,y=Leaf_length),data=data,
main="Box Plot using qplot()",geom="boxplot",
xlab="Country",ylab="Leaf Length")
这是我的数据。
structure(list(AORB = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), levels = c("a", "b"), class = "factor"), Leaf_length = c(290L,290L, 350L, 300L, 250L, 510L, 450L, 430L, 550L, 1000L), Leaf_width = c(200L,200L, 280L, 240L, 200L, 190L, 230L, 240L, 250L, 531L)), row.names = c(NA,-10L), class = "data.frame")
任何人都可以帮助我获取代码吗?如果我没有清楚地提供我的数据,请告诉我。
谢谢!
实现所需结果的最简单选择是在绘图之前很久就将数据重新整形。另请注意,
qplot
在 ggplot2 3.4.0
中已弃用:
library(ggplot2)
library(tidyr)
dat_long <- data |>
tidyr::pivot_longer(c(Leaf_length, Leaf_width),
names_to = "stat", values_to = "value"
)
ggplot(dat_long, aes(AORB, value, fill = stat)) +
geom_boxplot() +
labs(
x = "Country"
)