Я пытаюсь построить составной барплот, без промежутков между барами и датами на оси абсцисс. Чтобы добиться этого, я установил ширину, равную разнице между следующими датами, и уменьшил положение x на половину разницы в датах. Поэтому, если Дата 2018-01-31, я хочу, чтобы бар начинался точно в эту дату и заканчивался в следующую дату (2018-02-28). Пока это работает хорошо, но при введении этой логики позиционирования c мои бары перестали укладываться (рисунок: бары перекрываются, но не уложены -> в сумме до 1). Как я могу их пересчитать?
ggplot(weights_gg2, aes(x=Date, y=Exposure, fill=Bond)) +
geom_bar(stat="identity", colour="white", width=rep(c(diff(weights_df$Date), 20), 13), position = position_nudge(x=rep(c(diff(weights_df$Date), 20), 13)/2)) +
theme_bw(base_size=12)
Необходимые данные: weights_df содержит все данные и даты, а weights_gg2 уже расплавлен для ggplot
РЕШЕНИЕ:
Манипулируйте входными данными, а не изменяйте положение впоследствии:
hjust <- rep(c(diff(weights_df$Date), 20), 13)/2
ggplot(weights_gg2, aes(x=Date+hjust, y=Exposure, fill=Bond)) +
geom_bar(stat="identity", colour="white", width=rep(c(diff(weights_df$Date), 20), 13))+
theme_bw(base_size=12)