使用ggplot

时间:2019-01-05 01:30:17

标签: r ggplot2 boxplot

我正在尝试使用ggplot设置箱形图。我在五天内进行了三种温度处理,并希望创建一个箱形图,在其中可以在x轴上看到五天,每天有三个框,分别代表每种处理。这是输出图像的链接: 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个框的图形,每个处理每天3个。这是使用boxplot()指向正确的boxplot图像的链接:https://imgur.com/EwGD1ES.png

关于那里的boxplot(),我认为温度应该嵌套到当天,这样一秒钟就可以显示三个框。我不确定是否要通过这句话使自己清楚...

这是我的第一个问题。希望它足够详细。似乎我在处理图片时遇到问题,但我认为该网址应该可以。

编辑: 谢谢您的回答,@ r_alanb!它为我工作。

1 个答案:

答案 0 :(得分:1)

你很近。

您需要将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")

结果如下:

boxplot of time vs. TotalLength by temperature group