составленная гистограмма с вложенной осью x в ggplot2 - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь создать сложенную гистограмму с вложенной осью x

enter image description here

Я пробовал с ggplot, но до сих пор не подошел

Как видно из изображения выше, я пытаюсь сделать гистограмму, которая оба показывают общее количество на бин в год и отдельные счета, которые составляют общее количество будет показано внутри бара

Индивидуальные подсчеты, составляющие общее количество, получены из столбец, относящийся к столбцу FAMILY_DESC

Подводя итог, я пытался сделать пометку между гистограммой и столбчатая диаграмма с накоплением

Следующая часть должна иметь вложенную ось х, чтобы было 6 корзин, и это будет повторяться в течение всех лет

Надеюсь, это имело смысл, и большое спасибо заранее

structure(list(Year = c("2009", "2009", "2009", "2009", "2009", 
"2009", "2009", "2009", "2009", "2009", "2009", "2009", "2009", 
"2009", "2009", "2009", "2009", "2009", "2009", "2009", "2009", 
"2009", "2009", "2009", "2011", "2011", "2011", "2011", "2011", 
"2011", "2011", "2011", "2011", "2011", "2011", "2011", "2011", 
"2011", "2011", "2011", "2011", "2011", "2011", "2011", "2011", 
"2011", "2011", "2011", "2013", "2013", "2013", "2013", "2013", 
"2013", "2013", "2013", "2013", "2013", "2013", "2013", "2013", 
"2013", "2013", "2013", "2013", "2013", "2013", "2013", "2013", 
"2013", "2013", "2013", "2015", "2015", "2015", "2015", "2015", 
"2015", "2015", "2015", "2015", "2015", "2015", "2015", "2015", 
"2015", "2015", "2015", "2015", "2015", "2015", "2015", "2015", 
"2015", "2015", "2015"), FAMILY_DESC = structure(c(1L, 1L, 1L, 
1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L, 5L, 11L, 11L, 11L, 11L, 11L, 
11L, 12L, 12L, 12L, 12L, 12L, 12L, 1L, 1L, 1L, 1L, 1L, 1L, 5L, 
5L, 5L, 5L, 5L, 5L, 11L, 11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 
12L, 12L, 12L, 1L, 1L, 1L, 1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L, 5L, 
11L, 11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 12L, 12L, 12L, 1L, 
1L, 1L, 1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L, 5L, 11L, 11L, 11L, 11L, 
11L, 11L, 12L, 12L, 12L, 12L, 12L, 12L), .Label = c("ACROPORIDAE", 
"AGARICIIDAE", "DENDROPHYLLIIDAE", "EUPHYLLIDAE", "FAVIIDAE", 
"FUNGIIDAE", "MERULINIDAE", "MUSSIDAE", "OCULINIDAE", "PECTINIIDAE", 
"POCILLOPORIDAE", "PORITIDAE", "SIDERASTREIDAE", "UNKNOWN"), class = "factor"), 
    bin = c("five", "four", "one", "three", "two", "zero", "five", 
    "four", "one", "three", "two", "zero", "five", "four", "one", 
    "three", "two", "zero", "five", "four", "one", "three", "two", 
    "zero", "five", "four", "one", "three", "two", "zero", "five", 
    "four", "one", "three", "two", "zero", "five", "four", "one", 
    "three", "two", "zero", "five", "four", "one", "three", "two", 
    "zero", "five", "four", "one", "three", "two", "zero", "five", 
    "four", "one", "three", "two", "zero", "five", "four", "one", 
    "three", "two", "zero", "five", "four", "one", "three", "two", 
    "zero", "five", "four", "one", "three", "two", "zero", "five", 
    "four", "one", "three", "two", "zero", "five", "four", "one", 
    "three", "two", "zero", "five", "four", "one", "three", "two", 
    "zero"), famtotal = c(0L, 1L, 87L, 1L, 4L, 136L, 0L, 1L, 
    35L, 2L, 7L, 6L, 0L, 1L, 33L, 8L, 12L, 64L, 0L, 1L, 37L, 
    1L, 8L, 20L, 0L, 2L, 88L, 3L, 6L, 122L, 0L, 2L, 57L, 4L, 
    9L, 16L, 0L, 5L, 43L, 4L, 15L, 81L, 0L, 1L, 32L, 1L, 7L, 
    25L, 0L, 1L, 57L, 4L, 9L, 100L, 0L, 6L, 38L, 7L, 9L, 8L, 
    0L, 0L, 29L, 8L, 8L, 47L, 0L, 0L, 26L, 2L, 4L, 23L, 0L, 0L, 
    65L, 1L, 14L, 124L, 0L, 2L, 29L, 1L, 3L, 19L, 0L, 5L, 38L, 
    4L, 5L, 50L, 0L, 0L, 20L, 0L, 6L, 18L), yeartotal = c(0L, 
    4L, 192L, 12L, 31L, 226L, 0L, 4L, 192L, 12L, 31L, 226L, 0L, 
    4L, 192L, 12L, 31L, 226L, 0L, 4L, 192L, 12L, 31L, 226L, 0L, 
    10L, 220L, 12L, 37L, 244L, 0L, 10L, 220L, 12L, 37L, 244L, 
    0L, 10L, 220L, 12L, 37L, 244L, 0L, 10L, 220L, 12L, 37L, 244L, 
    0L, 7L, 150L, 21L, 30L, 178L, 0L, 7L, 150L, 21L, 30L, 178L, 
    0L, 7L, 150L, 21L, 30L, 178L, 0L, 7L, 150L, 21L, 30L, 178L, 
    0L, 7L, 152L, 6L, 28L, 211L, 0L, 7L, 152L, 6L, 28L, 211L, 
    0L, 7L, 152L, 6L, 28L, 211L, 0L, 7L, 152L, 6L, 28L, 211L)), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -96L), .Names = c("Year", 
"FAMILY_DESC", "bin", "famtotal", "yeartotal"), vars = c("Year", 
"FAMILY_DESC"))

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Вы можете попробовать это. Похож на другой хороший ответ, но с некоторыми серьезными изменениями, чтобы подражать вашей схеме.

ggplot(d, aes(x=factor(bin, levels = c("zero","one", "two", "three", "four", "five")), 
              y=yeartotal, fill=FAMILY_DESC)) + 
  geom_col() +
  xlab("") +
  facet_grid(~Year, switch = "x") +
  theme(panel.border = element_blank(),
        panel.spacing.x = unit(0,"cm"),
        strip.placement = "outside",
        strip.background = element_blank())

enter image description here

0 голосов
/ 28 августа 2018

Где dat - ваш data.frame, и bin, вероятно, придется переупорядочить:

ggplot(dat, aes(x=bin, y=yeartotal, fill=FAMILY_DESC)) + geom_col() +
  facet_wrap(~Year)

Хотя высоты не совсем соответствуют вашему рисунку.

Поскольку вы уже выполнили подсчет в корзинах, вы не хотите использовать geom_bar, так как по умолчанию начинается отсчет. Вместо этого мы используем geom_col.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...