У меня проблемы с получением ggplot()
, чтобы показать все непрерывные данные на моей оси y, одновременно сохраняя правильный порядок моей категориальной переменной на оси x.Вот мой текущий код:
s3 <- ggplot(summary3, aes(x = Date, y = True.Leaves, shape = Location)) +
geom_errorbar(aes(ymin = True.Leaves - se, ymax = True.Leaves + se), width = .1) +
facet_wrap(~ Vegetation) +
geom_point(size = 5) +
labs(x = "Date", y = "Seedling Counts") +
scale_x_discrete(limits = c("11/30/15", "10/22/16", "11/19/16", "12/14/16", "1/18/17",
"2/16/17", "3/19/17", "4/17/17", "5/17/17", "6/17/17",
"7/12/17", "8/6/17", "9/21/17", "10/12/17", "11/20/17",
"12/14/17") )
Однако, это приводит к следующему сообщению об ошибке, которое, как я знаю, происходит, потому что ось y должна быть расширена, чтобы включить полосы ошибок, которые выходят ниже оси 0.
1: Removed 20 rows containing missing values (geom_errorbar).
2: Removed 20 rows containing missing values (geom_point).
Моя проблема в том, что я не могу изменить масштаб оси Y, не испортив ось X.Если я добавлю + scale_y_continuous(limits = c(-2,15))
или + coord_cartesian(ylim = -2:15)
, сообщение об ошибке исчезнет, но порядок дат на моей оси x изменится и станет упорядоченным по номеру (начиная с 18.01.17 вместо 30.11.15) хотя я явно установил эту переменную как фактор, а не целое число.То, произойдет ли это, зависит от того, является ли аргумент scale_y_continuous()
или scale_x_discrete()
первым в функции ggplot - в зависимости от того, кто находится первым, тот доминирует.
Я также пытался установить ось x как даты, а не как категориальную переменную, но первая дата (30.11.15) на год опережает другие даты, и я хочу, чтобы все датыраспределяться одинаково, не основываясь на том, прошло ли больше времени или нет.
Большое спасибо за вашу помощь в этом!