Соглашаясь с @dmp, использование sec_axis
только добавляет метки справа;если вы хотите изменить то, как это выглядит на графике, вам нужно либо
- Использовать
scale_y_reverse()
, что перевернет все ; - Вручную перевернитесериалы в эстетике;или
- Вручную переверните ряд в самих данных.
Поскольку вы хотите сторнировать только один из рядов данных, а не все, № 1 пропал. # 3 работает, хотя вам все равно нужно изменить вызов на sec_axis
, поэтому я сделаю это просто: # 2.
library(ggplot2)
mt <- transform(mtcars, rn = 1:nrow(mtcars))
ggplot(mt) +
geom_bar(aes(x = rn, y = drat), stat = "identity") +
geom_line(aes(x = rn, y = disp/100), stat = "identity", color = "red", size = 1) +
scale_y_continuous(sec.axis = sec_axis(~ . * 100))
Отражая только красную линию, мы меняем как то, как оно определено в эстетике (хотя это может быть изменено в самой раме), так и sec_axis
.
ggplot(mt) +
geom_bar(aes(x = rn, y = drat), stat = "identity") +
geom_line(aes(x = rn, y = 5 - disp/100), stat = "identity", color = "red", size = 1) +
# changes: ^^^ vvv
scale_y_continuous(sec.axis = sec_axis(~ (5 - .) * 100))
(Важно помнить, что точка переворачивания (5
в приведенном выше примере) основана на масштабе главной оси, а не на новых данных.)
Без тестирования, я подозреваю, что исправление для вашего кода было бы примерно таким (где 9
выведено из графика).
gpp = ggplot() +
geom_line(data = hum_melt10,aes(x = fecha, y = value, color = variable), size = 1.0) +
xlab("Fecha") +
geom_bar(data = pp_melt, aes(x = fecha, y = 9 - value / 20, fill = variable), stat="identity",position = 'dodge', na.rm = TRUE) +
# changes: ^^^ vvv
scale_y_continuous(name = "Contenido de agua (%)", sec.axis = sec_axis(~(9 - .)*20, name = "pp y riego (cm)")) +
scale_x_date(breaks = '2 month', labels = fecha, date_labels = '%b %y') +
theme(plot.title = element_text(lineheight=.8, face="bold", size = 20)) +
theme_bw() + theme( panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"), aspect.ratio = 0.3)