4

I want to plot multiple plots, all with the same X-axis.

One of those plots has a few missing values at the start (by definition, like a moving average data would).

For comparability, I'd like the start of the X-axis for all plots to be the same.

Here's a reproducible example -

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))

Now, I can't force plotly to include the first 12 points because they are NA.

The documentation suggests using tickvals, ticktext. But that doesn't seem to work. Nor does trying to force the X-axis to start at 2011-07-01 (the first month). Here's what I have tried -

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'))

Both graphs produce the X-axis beginning from July 2012 as opposed to July 2011 as I would want.

How should I force the required behaviour from plotly? Thank you!

P.S. I'd like to not convert the Month column into a factor/character so that I can use the date formatting options in the layout.

1 Answer 1

6

You could do this by setting the range:

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

Hope this helps!

Sign up to request clarification or add additional context in comments.

2 Comments

That was simple, thank you! I still don't understand why the tick0, dtick approach did not work though.
I guess what happens is that your tickmarks are created as you specified, but plotly then zooms to the area without NA's by default. So your tick0 is there, but plotly chooses to ignore that when setting its range.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.