Как преобразовать непрерывную дату в категорию "дискета"? - PullRequest
1 голос
/ 23 апреля 2020

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

enter image description here

Если я попытаюсь с scale_x_discrete, метки года вообще исчезнут.

library(ggplot2)
ggplot(df2018, aes(x = Year, y= Weight, fill = Year)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  facet_wrap(~ Species, scale = "free_x") +
  scale_x_discrete("Year", labels = c("2018", "2019"))

Как я могу преобразовать Столбец Year, чтобы ggplot считывал его как две разные категории (т.е. год 2018 и 2019)?

Данные:

structure(list(Species = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 
2L, 3L, 1L, 4L, 5L, 6L), .Label = c("Coralline", "Pocockiella", 
"Gigartina", "Ulva", "Colpomenia", "Sargassum"), class = "factor"), 
    Year = c(2018, 2018, 2018, 2018, 2018, 2018, 2019, 2019, 
    2019, 2019, 2019, 2019), Weight = c(0.83879, 1.61504, 2.32838, 
    6.25983, 8.77286, 115.48649, 0.046695, 0.1373982, 0.392931, 
    0.508436, 0.521956, 90.098115), Percent = c(0.614156130776106, 
    1.18252091399354, 1.70482343825805, 4.58340344080901, 6.42342630865946, 
    84.5583946581545, 0.0508869004261174, 0.149732702047923, 
    0.428205175529173, 0.554079282686656, 0.568812999225068, 
    98.186396971536)), row.names = c(NA, -12L), class = c("tbl_df", 
"tbl", "data.frame"))

Ответы [ 2 ]

2 голосов
/ 23 апреля 2020

Изменить year на factor класс:

library(dplyr)
library(ggplot2)

df %>%
  mutate(Year = factor(Year)) %>%
  ggplot() + aes(x = Year, y= Weight, fill = Year) +
  geom_bar(stat = "identity") +
  coord_flip() +
  facet_wrap(~ Species, scale = "free_x")

enter image description here

0 голосов
/ 24 апреля 2020

Мы можем использовать только ggplot, чтобы сделать это

library(ggplot2)
ggplot(df2018, aes(x = Year, y= Weight, fill = as.factor(Year))) +
    geom_bar(stat = "identity") +
   coord_flip() +
   facet_wrap(~ Species, scale = "free_x") +
   scale_x_discrete("Year", labels = c("2018", "2019")) + 
   scale_fill_discrete(name = 'Year')

-выход

enter image description here

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