我很难找到一个解决方案,在一个图中绘制多个盒子图,在R中绘制盒子图。
我有一个数据集,其中有48个地点的土壤湿度测量了5个日期。立地分为四类: A、C、M、P(每类12个)。
我将数据保存为一个6列的.csv文件。
第一列包含站点的类: A、C、M或P。
第二列到第六列包含度量(febr2017、mar2017、jun2017、sep2017和feb2018)。
我想要绘制这5个日期的土壤湿度的方格图与网站的班级。
到目前为止我的代码是:
boxplot(feb2017~class, humidity, na.action=NULL, main="Soil humidity", xlab="Class", ylab="Humidity (%)", col=(c("yellowgreen")))然而,这只显示了二月的土壤湿度与班级的对比。我尝试在其余的绘图中使用参数"add=TRUE“,但它显示了所有重叠的日期。
我的问题是:如何在一个图中显示其余的日期,并有一些躲闪的位置?
任何帮助都将不胜感激。
发布于 2018-04-09 23:09:38
在这种情况下,tidyverse提供了一个很好的解决方案。
一些假数据:
set.seed(111)
df1 <- data.frame(class = sample(c("A", "C", "M", "P"), 100, replace = TRUE),
feb2017 = sample(0:100, 100, replace = TRUE),
mar2017 = sample(0:100, 100, replace = TRUE),
jun2017 = sample(0:100, 100, replace = TRUE),
sep2017 = sample(0:100, 100, replace = TRUE),
feb2018 = sample(0:100, 100, replace = TRUE))诀窍是将日期放到一个列中,将这些日期的值放到另一个列中。您还需要设置因子级别,以获得正确的日期顺序。
您可以通过面或颜色来指示站点类。如下所示,我认为颜色效果更好。
library(tidyverse)
df1 %>%
gather(Date, Humidity, -class) %>%
mutate(Date = factor(Date, levels = c("feb2017", "mar2017", "jun2017",
"sep2017", "feb2018"))) %>%
ggplot(aes(Date, Humidity)) +
geom_boxplot() +
facet_grid(~class)

df1 %>%
gather(Date, Humidity, -class) %>%
mutate(Date = factor(Date, levels = c("feb2017", "mar2017", "jun2017",
"sep2017", "feb2018"))) %>%
ggplot(aes(Date, Humidity)) +
geom_boxplot(aes(fill = class))

https://stackoverflow.com/questions/49742709
复制相似问题