我正在尝试在ggplot2的箱线图中获取两个x轴;一个是站点,另一个是区域。我有11个不同的站点和3个区域,并希望显示我的数据,使“区域”位于“站点”下方,每个站点都包含几个站点。
我已经尝试过分面换行和网格化,但是我只想显示所有观察结果的一张图。
我的数据看起来像这样:
Region Site Value
South Site1 0.1
South Site1 0.3
South Site2 0.24
South Site2 0.03
South Site3 0.06
South Site3 0.14
South Site3 0.02
Central Site4 0.4
Central Site4 0.32
Central Site4 0.45
Central Site5 0.22
Central Site5 0.27
Central Site5 0.13
Central Site6 0.09
North Site7 0.55
North Site7 0.34
North Site8 0.67
North Site9 0.89
North Site9 0.7
North Site9 0.51
相关代码如下:
graph <- ggplot(dataframe, aes(x=Site, y=Value)) + geom_boxplot()
我希望获得一张图形,其中站点由其关联的区域表示,理想情况下,每个区域标签仅在每个站点所代表的站点下显示一次。
答案 0 :(得分:0)
使用有序因子将变量级别分组。我使用y轴是因为Region
级别是基数。
最好, 泰勒
library(tidyverse)
dat <- tribble(
~Region, ~Site, ~Value,
"South", "Site1", 0.1,
"South", "Site1", 0.3,
"South", "Site2", 0.24,
"South", "Site2", 0.03,
"South", "Site3", 0.06,
"South", "Site3", 0.14,
"South", "Site3", 0.02,
"Central", "Site4", 0.4,
"Central", "Site4", 0.32,
"Central", "Site4", 0.45,
"Central", "Site5", 0.22,
"Central", "Site5", 0.27,
"Central", "Site5", 0.13,
"Central", "Site6", 0.09,
"North", "Site7", 0.55,
"North", "Site7", 0.34,
"North", "Site8", 0.67,
"North", "Site9", 0.89,
"North", "Site9", 0.7,
"North", "Site9", 0.51)
dat <-
dat %>%
mutate(
Region = factor(x = Region, levels = c("South", "Central", "North"), ordered = T),
Site = factor(x = Site) %>% fct_rev())
ggplot(data = dat, mapping = aes(x = Region, y = Value, position = fct_rev(Site), fill = Site)) +
geom_boxplot() +
coord_flip()