如何在一个箱形图中获得两个X轴

时间:2019-05-03 18:44:53

标签: r ggplot2 boxplot multiple-axes

我正在尝试在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()

我希望获得一张图形,其中站点由其关联的区域表示,理想情况下,每个区域标签仅在每个站点所代表的站点下显示一次。

1 个答案:

答案 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()

figure.png