Я столкнулся со следующей трудностью при использовании ggplot2. Я пытаюсь создать гистограмму с набором данных временного ряда, отображающим значения для каждого столбца И хороший формат даты под осью X. Проблема заключается в том, что:
- для установки на или выше полос, необходимо использовать position_dodge, НО эта функция допускает только переменные не POSIXct
- для функции go -to даты по оси x - это scale_x_date, для которого требуется переменная POSIXct
Как мне решить эту проблему?
df <- data.frame(period = c("2019-01-01", "2019-02-01","2019-01-01","2019-02-01"),
variable = c("A", "A", "B", "B"),
value = c(100,88, 99,77))
df$period_d <- as.POSIXct(df$period)
Это работает хорошо (но без дат по оси X ).
ggplot(df, aes(x=period, y=value, group= variable, fill=variable))+
geom_col(position= "dodge")+
geom_text(aes(x=period, y=value,label=value),
position = position_dodge(1))
Это работает хорошо, но со значением в неправильном месте
ggplot(df, aes(x=period_d, y=value, group= variable, fill=variable))+
geom_col(position= "dodge")+
scale_x_datetime(labels=date_format("%b-%y"),
breaks = date_breaks("1 month"))
Но смешивание этих двух элементов - неудача. При использовании переменной POSIXct метки находятся не там, где они должны быть, и если вы используете символьную переменную, вы получаете следующее сообщение об ошибке: «Неверный ввод: time_trans работает только с объектами класса POSIXct»
Есть мысли?