r多个y轴的互动情节

问题描述:

我想创建R中类似于这样一个情节: enter image description herer多个y轴的互动情节

多达6个变量,它应是有反应。

我试图积攒,然而在情节上我会得到轴蜱的情节,它变得凌乱,我设法得到只有一个y轴出。

enter image description here

有没有办法重新创建plotly情节或任何其他互动库?

我plotly代码:

library(dplyr) 
library(plotly) 
library(tidyr) 

data <- cbind(
    seq(from = 1, to = 30, by = 1), 
    sample(seq(from = 100, to = 300, by = 10), size = 30, replace = TRUE), 
    sample(seq(from = 1, to = 100, by = 9), size = 30, replace = TRUE), 
    sample(seq(from = 50, to = 60, by = 2), size = 30, replace = TRUE), 
    sample(seq(from = 100, to = 130, by = 1), size = 30, replace = TRUE) 
) %>% 
    as.data.frame() 

names(data) <- c("date", "a", "b", "x", "y") 

plot_ly(x = ~data$date) %>% 
    add_lines(y = ~data[, 2], name = "a", line = list(color = "red")) %>% 
    add_lines(y = ~data[, 3], name = "b", line = list(color = "blue"), yaxis = "y2") %>% 
    add_lines(y = ~data[, 4], name = "x", line = list(color = "green"), yaxis = "y3") %>% 
    add_lines(y = ~data[, 5], name = "y", line = list(color = "pink"), yaxis = "y4") %>% 
    layout(
    yaxis = list(
     side = "left", 
     title = list("") 
    ), 
    yaxis2 = list(
     side = "left", 
     overlaying = "y", 
     anchor = "free" 
    ), 
    yaxis3 = list(
     side = "left", 
     overlaying = "y", 
     anchor = "free", 
     position = 0.04 
    ), 
    yaxis4 = list(
     side = "left", 
     overlaying = "y", 
     anchor = "free", 
     position = 0.08 
    ), 
    margin = list(pad = 30) 
) 

随着highcharter包,可以创建多个Y轴好的时间序列图:

library(highcharter) 

set.seed(1) 
n <- 100 
x1 <- cumsum(rnorm(n)) 
x2 <- cumsum(runif(n)-0.5)+10 
x3 <- cumsum(rnorm(n,0,20))+100 
x4 <- cumsum(rnorm(n,0,20))+1000 

highchart() %>% 
    hc_add_series(data = x1) %>% 
    hc_add_series(data = x2, yAxis = 1) %>% 
    hc_add_series(data = x3, yAxis = 2) %>% 
    hc_add_series(data = x4, yAxis = 3) %>% 
    hc_yAxis_multiples(
    list(lineWidth = 3, lineColor='#7cb5ec', title=list(text="First y-axis")), 
    list(lineWidth = 3, lineColor="#434348", title=list(text="Second y-axis")), 
    list(lineWidth = 3, lineColor="#90ed7d", title=list(text="Third y-axis")), 
    list(lineWidth = 3, lineColor="#f7a35c", title=list(text="Fourth y-axis")) 
    ) 

enter image description here

我只是调整了你的代码。希望这可以帮助!

plot_ly(x = ~data$date) %>% 
    add_lines(y = ~data[, 2], name = "a", line = list(color = "red")) %>% 
    add_lines(y = ~data[, 3], name = "b", line = list(color = "blue"), yaxis = "y2") %>% 
    add_lines(y = ~data[, 4], name = "x", line = list(color = "green"), yaxis = "y3") %>% 
    add_lines(y = ~data[, 5], name = "y", line = list(color = "pink"), yaxis = "y4") %>% 
    layout(
    yaxis = list(
     side = "left", 
     color="red", 
     title = "" 
    ), 
    yaxis2 = list(
     overlaying = "y", 
     anchor = "free", 
     color="blue", 
     title= "" 
    ), 
    yaxis3 = list(
     side = "right", 
     overlaying = "y", 
     color="green", 
     title= "" 
    ), 
    yaxis4 = list(
     side = "right", 
     overlaying = "y", 
     anchor = "free", 
     position = 1, 
     color="pink", 
     title= "" 
    ), 
    xaxis = list(
     title = "" 
    ), 
    margin = list(pad = 25) 
) 
+0

谢谢,但问题是,当我有超过4个变量它不会工作,我需要达到6 –