2017-07-30 60 views
1

我试图在图中绘制多条线。问题是每个正在绘制的变量都会创建一组新的y轴值。这可以解决。我想为我创建的所有线图绘制相同的y轴。以下是代码和生成的情节。R中多个y轴范围的问题

p1 <- plot_ly(data = st_data, x = ~Date) %>% add_lines(y = ~Close,name = 
"Close") %>% 
add_lines(y=~Bollinger,name="Bollinger") 

enter image description here 在Y轴具有值范围从一次到61.85 65.90再从62.15到65.49的曲线图。

理想情况下,我正在寻找y轴值在61.85和65.90之间,两条线绘制在同一轴上。

Adding the input data: 
Date   Close Bollinger 
1/30/2015 9:34 65.55 NA 
1/30/2015 9:34 65.43 NA 
1/30/2015 9:35 65.52 NA 
1/30/2015 9:35 65.37 NA 
1/30/2015 9:36 65.68 65.184 
1/30/2015 9:36 65.4 65.303 
1/30/2015 9:36 65.51 65.4155 
1/30/2015 9:36 65.8 65.499 
1/30/2015 9:36 65.6 65.548 
+1

你可以添加一些你的输入数据? –

+2

请提供一个例子的数据。但这可能是因为你的变量是因素。只需将它们作为数字向量投入使用即可。 – sjakw

+0

@MaximilianPeters感谢您提出完成问题需要什么 –

回答

0

是的,你的代码应该已经工作了。我认为sjakw是正确的,因为你有其他一些代码会产生问题。尝试打开一个新脚本,并粘贴下面的代码。你应该得到一个单一的Y轴的情节。

library(data.table) 
library(plotly) 
st_data <- fread('Date , Close, Bollinger 
       1/30/2015 9:34, 65.55, NA 
       1/30/2015 9:34, 65.43, NA 
       1/30/2015 9:35, 65.52, NA 
       1/30/2015 9:35, 65.37, NA 
       1/30/2015 9:36, 65.68, 65.184 
       1/30/2015 9:36, 65.4 , 65.303 
       1/30/2015 9:36, 65.51, 65.4155 
       1/30/2015 9:36, 65.8 , 65.499 
       1/30/2015 9:36, 65.6 , 65.548 ') 
p1 <- plot_ly(data = st_data, x = ~Date) %>% add_lines(y = ~Close,name = "Close") %>% 
    add_lines(y=~Bollinger,name="Bollinger") 
p1 

我更喜欢以下方法。

p2 <- plot_ly() 
p2 <- add_lines(p, data = st_data, x = ~Date, y = ~Close, name = "Close") 
p2 <- add_lines(p, data = st_data, x = ~Date, y = ~Bollinger, name = "Bollinger") 
p2 

您的数据是“宽”格式。您可以使用类似的代码到R Plotly Book如果你融化你的数据变成“长”格式:

st_data_long <- melt.data.table(st_data, id = "Date", measure.vars = c("Close", "Bollinger"), 
           value.factor = TRUE, variable.name = "PriceType", value.name = "Price") 
p3 <- plot_ly(st_data_long, x = ~Date, y = ~Price) %>% 
    add_lines(color = ~PriceType) 
p3 

我也有一个样本数据集试过列入R:

# First make Date one column 
airquality <- data.table(airquality) 
airquality[, Date := do.call(paste, .SD), .SDcols = c("Month", "Day")] 

p4 <- plot_ly() 
p4 <- add_lines(p1, data = airquality, x = ~Date, y = ~Ozone, name = "Ozone") 
p4 <- add_lines(p1, data = airquality, x = ~Date, y = ~Temp, name = "Temp") 
p4