переменная графика с использованием ggplot по второй оси y - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь переместить одну из моих переменных (v4) на вторую ось. Я знаю, что ggplot не «строит график на вторичной оси», но вы можете повторно увеличить конкретную переменную и правую ось, используя левую ось. Однако я не смог повторно увеличить оба, так что правая ось по-прежнему показывает правильные измерения переменной. Например, я пытаюсь найти решения, которые нашел в Интернете:

year <- c(1990,2000,2010,2020)
v1 <- c(90,100,103,115)
v2 <- c(90,100,107,125)
v2 <- c(90,100,107,125)
v3 <- c(90,100,104,120)
v4 <- c(90,100,150,200)

df <- data.frame(year,v1,v2,v3,v4)

figureA <- ggplot(df, aes(year)) +
  geom_ribbon(data=subset(df, year >= 2000), aes(ymin=v1, ymax=v2), fill="blue", alpha=0.10) +
  geom_line(aes(y = v1, color = "v1"), size=1.5) +
  geom_line(aes(y = v2, color = "v2"), size=1.5) +
  geom_line(aes(y = v3, color = "v3"), size=1.5) + 
  geom_line(aes(y = v4/2+50, color = "v4"), size=1.5) +
  scale_y_continuous(sec.axis = sec_axis(~.*2, name = "v4"))

figureA

Учитывая теоретическое соотношение переменных, имеет смысл поместить v4 на вторую ось, однако, с решением, которое я нашел онлайн, значения на правой оси не соответствуют переменной.

1 Ответ

0 голосов
/ 07 марта 2019

После комментария iod этот код показывает значения v4, соответствующие правому ixis

figureA <- ggplot(df, aes(year)) +
  geom_ribbon(data=subset(df, year >= 2000), aes(ymin=v1, ymax=v2), fill="blue", alpha=0.10) +
  geom_line(aes(y = v1, color = "v1"), size=1.5) +
  geom_line(aes(y = v2, color = "v2"), size=1.5) +
  geom_line(aes(y = v3, color = "v3"), size=1.5) + 
  geom_line(aes(y = v4/2, color = "v4"), size=1.5) +
  scale_y_continuous(sec.axis = sec_axis(~.*2, name = "v4"))

Проблема в '+ 50'

...