无法使用 ggplot 正确设置箱线图
Having trouble setting up correctly a boxplot with ggplot
我正在尝试使用 ggplot 设置箱线图。我在五天内进行了三种温度处理,我想创建一个箱线图,我可以在其中看到 x 轴上的五天,每天有三个框,代表每种处理。这是输出图像的 link:
https://i.imgur.com/F61TfM5.png
通过使用 boxplot() 函数,我创建了一个几乎是我想要的图形,但我仍然想了解如何使用 ggplot 来完成它。
我使用的数据的 head() 是:
Tratamiento Dias TotalLength
<fct> <dbl> <dbl>
1 Control 1 261
2 Control 1 262
3 Control 1 366
4 Control 1 315
5 Control 1 351
6 Control 1 320
我上传数据到https://pastebin.com/raw/ZQk8tfK5
向我展示了我想要看到的内容的箱线图代码是:
library(RColorBrewer)
TLboxplot <- boxplot(TotalLength ~ Tratamiento + Dias, data= TLmeasure,
main = 'Total Length',
xlab = "Tratamiento x Dias", ylab = "TL",
ylim = c(100,700),
col= brewer.pal(n = 3, name = "Reds"))
我用于 ggplot 的代码不是我要找的代码是:
library(ggplot2)
TLggplot <- ggplot(TLmeasure, aes(x=Tratamiento, y=TotalLength,
fill=Tratamiento)) +
labs(title="Total Length", x="Temperatura x Dia", y="TL(µm)") +
geom_boxplot() +
scale_fill_brewer(palette="Reds") +
theme_classic() +
theme(legend.position = "top")
ggplot 的实际结果是一个包含 3 个方框的图表,x 轴是每个处理,而不是 5 天和每天 3 个方框。我正在寻找的只是一张包含 15 个方框的图表,每次治疗每天三个方框。这是使用 boxplot() 的正确箱线图图像的 link:https://imgur.com/EwGD1ES.png
关于上面的 boxplot(),我认为应该将温度嵌套到日期,以便它仅在一个刻度内显示三个框。我不确定我是否用这个声明让自己清楚...
这是我的第一个问题。希望够详细。似乎我在处理图像时遇到了问题,但我认为 URL 应该可以。
编辑:
谢谢你的回答,@r_alanb!它对我有用。
你很接近。
您需要 Tratamiento
作为 fill
,并且 Dias
作为 x
的一个因素:
library(ggplot2)
library(RColorBrewer)
ggplot(TLmeasure, aes(as.factor(Dias), TotalLength, fill = Tratamiento)) +
geom_boxplot() +
# the rest of your code
labs(title="Total Length", x="Temperatura x Dia", y="TL(µm)") +
geom_boxplot() +
scale_fill_brewer(palette="Reds") +
theme_classic() +
theme(legend.position = "top")
结果如下:
我正在尝试使用 ggplot 设置箱线图。我在五天内进行了三种温度处理,我想创建一个箱线图,我可以在其中看到 x 轴上的五天,每天有三个框,代表每种处理。这是输出图像的 link: https://i.imgur.com/F61TfM5.png
通过使用 boxplot() 函数,我创建了一个几乎是我想要的图形,但我仍然想了解如何使用 ggplot 来完成它。
我使用的数据的 head() 是:
Tratamiento Dias TotalLength
<fct> <dbl> <dbl>
1 Control 1 261
2 Control 1 262
3 Control 1 366
4 Control 1 315
5 Control 1 351
6 Control 1 320
我上传数据到https://pastebin.com/raw/ZQk8tfK5
向我展示了我想要看到的内容的箱线图代码是:
library(RColorBrewer)
TLboxplot <- boxplot(TotalLength ~ Tratamiento + Dias, data= TLmeasure,
main = 'Total Length',
xlab = "Tratamiento x Dias", ylab = "TL",
ylim = c(100,700),
col= brewer.pal(n = 3, name = "Reds"))
我用于 ggplot 的代码不是我要找的代码是:
library(ggplot2)
TLggplot <- ggplot(TLmeasure, aes(x=Tratamiento, y=TotalLength,
fill=Tratamiento)) +
labs(title="Total Length", x="Temperatura x Dia", y="TL(µm)") +
geom_boxplot() +
scale_fill_brewer(palette="Reds") +
theme_classic() +
theme(legend.position = "top")
ggplot 的实际结果是一个包含 3 个方框的图表,x 轴是每个处理,而不是 5 天和每天 3 个方框。我正在寻找的只是一张包含 15 个方框的图表,每次治疗每天三个方框。这是使用 boxplot() 的正确箱线图图像的 link:https://imgur.com/EwGD1ES.png
关于上面的 boxplot(),我认为应该将温度嵌套到日期,以便它仅在一个刻度内显示三个框。我不确定我是否用这个声明让自己清楚...
这是我的第一个问题。希望够详细。似乎我在处理图像时遇到了问题,但我认为 URL 应该可以。
编辑: 谢谢你的回答,@r_alanb!它对我有用。
你很接近。
您需要 Tratamiento
作为 fill
,并且 Dias
作为 x
的一个因素:
library(ggplot2)
library(RColorBrewer)
ggplot(TLmeasure, aes(as.factor(Dias), TotalLength, fill = Tratamiento)) +
geom_boxplot() +
# the rest of your code
labs(title="Total Length", x="Temperatura x Dia", y="TL(µm)") +
geom_boxplot() +
scale_fill_brewer(palette="Reds") +
theme_classic() +
theme(legend.position = "top")
结果如下: