2017-07-30 66 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