2017-08-04 42 views
2

我想繪製多個繪圖,所有繪圖都具有相同的X軸。R - 強制繪圖以繪製缺失值

其中一個地塊在開始時有一些缺失值(根據定義,就像移動平均數據一樣)。

爲了可比性,我希望所有圖的X軸的開始都是相同的。

這裏有一個重複的例子 -

library(plotly) 
plotdata <- data.frame(Month=as.POSIXct(c(1309435200, 1312113600, 1314792000, 1317380400, 1320058800, 
            1322650800, 1325329200, 1328007600, 1330513200, 1333191600, 1335787200, 
            1338465600, 1341057600, 1343736000, 1346414400, 1349002800, 1351681200, 
            1354273200, 1356951600, 1359630000, 1362049200, 1364727600, 1367323200, 
            1370001600, 1372593600, 1375272000, 1377950400, 1380538800, 1383217200, 
            1385809200, 1388487600, 1391166000, 1393585200, 1396263600, 1398859200, 
            1401537600, 1404129600, 1406808000, 1409486400, 1412074800, 1414753200, 
            1417345200, 1420023600, 1422702000, 1425121200, 1427799600, 1430395200, 
            1433073600, 1435665600, 1438344000, 1441022400, 1443610800, 1446289200, 
            1448881200, 1451559600, 1454238000, 1456743600, 1459422000, 1462017600, 
            1464696000, 1467288000, 1469966400, 1472644800, 1475233200, 1477911600, 
            1480503600, 1483182000, 1485860400, 1488279600, 1490958000, 1493553600 
), origin='1970-01-01'), Value=c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.02, 0.05, 
            0.06, 0.04, 0.06, 0.06, 0.03, 0.04, 0.07, 0.03, 0.08, 0.05, 0.08, 
            0.09, 0.06, 0.05, 0.04, 0.08, 0.1, 0.07, 0.01, 0.11, 0.07, 0.04, 
            0.05, 0.05, 0.03, 0.05, 0.04, 0.02, 0.02, 0.05, 0.1, 0.01, 0.03, 
            0.03, 0.05, 0.03, 0.05, 0.05, 0.05, 0.08, 0.08, 0.1, 0.07, 0.07, 
            0.06, 0.08, 0.11, 0.06, 0.08, 0.07, 0.08, 0.08, 0.08, 0.03, 0.02, 
            0.13, 0.07)) 

現在,我不能強迫plotly包括第一個12分,因爲他們是NA

該文檔建議使用tickties,ticktext。但這似乎並不奏效。也沒有試圖迫使X軸在2011年7月1日(第一個月)開始。這是我已經嘗試過 -

plot_ly(plotdata, x=~Month, y=~Value, type='scatter', mode='lines') %>% layout(xaxis=list(tickmode='array', ticktext=plotdata$Time, tickvals=plotdata$Time)) 
plot_ly(plotdata, x=~Month, y=~Value, type='scatter', mode='lines') %>% layout(xaxis=list(tick0='2011-07-01', dtick='M12')) 

這兩張圖都會產生從2012年7月開始的X軸,而不是我想要的。

我該如何強制規定所需的行爲?謝謝!

P.S.我不想將Month列轉換爲因子/字符,以便我可以在佈局中使用日期格式選項。

回答

2

您可以通過設定的範圍內做到這一點:

plot_ly(plotdata, x=~Month, y=~Value, type='scatter', mode='lines') %>% 
    layout(xaxis=list(range = c(min(plotdata$Month),max(plotdata$Month)))) 

enter image description here

希望這有助於!

+1

很簡單,謝謝!我仍然不明白爲什麼tick0,dtick方法不起作用。 – Ameya

+1

我猜想會發生什麼情況是您的tickmarks是按照您指定的方式創建的,但是在默認情況下繪製然後放大到沒有NA的區域。所以你的tick0在那裏,但是在設定範圍時,情節上會選擇忽略它。 – Florian