Я не смог уместить все в комментарии, поэтому напишу это как ответ. Мне пришлось импровизировать некоторые данные, потому что у меня нет вашего пригодного для использования образца, но код построения должен быть похожим.
sec_scale=1/10
# I made up some data because I don't have yours
datu <- data.frame(Year = c(2000:2010, 2000:2010),
value = c(rnorm(11, 500, 10), rnorm(11, 5000, 100)),
variable = rep(c("Annual", "Cumulative"), each = 11))
Теперь для построения графика я удалил аргументы mapping
/ aes()
из geoms в основную функцию ggplot, и geom унаследует эти отображения из основного вызова ggplot.
Далее вы заметите, что я переопределил y = ifelse(variable == "Cumulative, sec_scale, 1) * value
, который масштабирует все value
с, для которых variable == "Cumulative"
, на сумму в sec_scale
p1<-ggplot(datu, aes(x = Year,
y = ifelse(variable == "Annual", 1/sec_scale, 1) * value,
colour = variable)) +
geom_line(linetype = "solid", size = 1.1) +
geom_point(shape = 1, size = 3, stroke = 1.5) +
scale_colour_manual(values = c("darkorange", "red")) +
scale_y_continuous(sec.axis = sec_axis(~.*sec_scale,name = "Annual\n")) +
labs(x="\nYear",y="Cumulative\n") +
theme(axis.title.x = element_text(size=18),
axis.text.x = element_text(size=14),
axis.title.y = element_text(size=18),
axis.text.y = element_text(size=14),
axis.ticks = element_blank(),
legend.title = element_blank(),
legend.position = c(0.12,0.89),
legend.text = element_text(size=14),
legend.background = element_rect(fill="white",size=0.5,linetype="dotted"))
Для меня сюжет выглядел так:

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