0

When I convert from ggplot to plotly, it seems that the dates on the facet plot does not quite fit the page. I'm looking to get more space between the end of the page and the dates on x-axis on the last faceted plot. I've tried to dynamically do this but it doesn't seem to work. Does anyone know of way to fix this problem?

Here is my code:

library(ggplot2)
library(plotly)

#reproducible data here
test_data <- structure(list(Toys = c("Slinky", "Slinky", "Slinky", "Slinky", 
                             "Slinky", "Slinky", "Tin Solider", "Tin Solider", "Tin Solider", 
                             "Tin Solider", "Tin Solider", "Tin Solider", "Hungry Hungry Hippo", 
                             "Hungry Hungry Hippo", "Hungry Hungry Hippo", "Hungry Hungry Hippo", 
                             "Hungry Hungry Hippo", "Hungry Hungry Hippo", "Bead Maze", "Bead Maze", 
                             "Bead Maze", "Bead Maze", "Bead Maze", "Bead Maze", "Hula Hoop", 
                             "Hula Hoop", "Hula Hoop", "Hula Hoop", "Hula Hoop", "Hula Hoop", 
                             "Kaleidoscope", "Kaleidoscope", "Kaleidoscope", "Kaleidoscope", 
                             "Kaleidoscope", "Kaleidoscope", "Pogo Stick", "Pogo Stick", "Pogo Stick", 
                             "Pogo Stick", "Pogo Stick", "Pogo Stick", "Jump N' Dunk Trampoline", 
                             "Jump N' Dunk Trampoline", "Jump N' Dunk Trampoline", "Jump N' Dunk Trampoline", 
                             "Jump N' Dunk Trampoline", "Jump N' Dunk Trampoline", "Play-Doh", 
                             "Play-Doh", "Play-Doh", "Play-Doh", "Play-Doh", "Play-Doh", "Mr. Potato Head", 
                             "Mr. Potato Head", "Mr. Potato Head", "Mr. Potato Head", "Mr. Potato Head", 
                             "Mr. Potato Head", "Corn Popper", "Corn Popper", "Corn Popper", 
                             "Corn Popper", "Corn Popper", "Corn Popper", "Let's Go Fishing", 
                             "Let's Go Fishing", "Let's Go Fishing", "Let's Go Fishing", "Let's Go Fishing", 
                             "Let's Go Fishing", "Operation", "Operation", "Operation", "Operation", 
                             "Operation", "Operation", "Ker Plunk", "Ker Plunk", "Ker Plunk", 
                             "Ker Plunk", "Ker Plunk", "Ker Plunk"), Price = c(5.99, 6.99, 
                                                                               7.99, 9, 6, 5.54, 7, 9.99, 6.99, 6.75, 8, 7.99, 9.99, 7.99, 5.99, 
                                                                               8.99, 10.99, 9.75, 9.99, 10.15, 8.99, 6.99, 5.99, 9.99, 9.99, 
                                                                               7.75, 8.75, 9.95, 4.5, 5.54, 3.99, 4.5, 7.5, 8.95, 8.9, 6.99, 
                                                                               150.99, 175.99, 170.99, 180.99, 190.99, 175, 310.64, 335.64, 
                                                                               360.64, 385.64, 410.64, 435.64, 7.99, 8.99, 9.05, 9.1, 9.99, 
                                                                               10.15, 6.75, 8.75, 7.75, 9.75, 6.75, 8.75, 10.35, 10.55, 11, 
                                                                               17, 17.75, 18, 6.97, 7.05, 8.97, 9, 8.99, 6.99, 19.99, 21.15, 
                                                                               16.99, 17.99, 18.99, 14.99, 14.96, 14.97, 15.15, 18.17, 19, 50
                             ), Dates = c("1/1/2021", "3/1/2021", "5/1/2021", "7/1/2021", 
                                          "9/1/2021", "10/1/2021", "1/1/2021", "3/1/2021", "5/1/2021", 
                                          "7/1/2021", "9/1/2021", "10/1/2021", "1/1/2021", "3/1/2021", 
                                          "5/1/2021", "7/1/2021", "9/1/2021", "10/1/2021", "1/1/2021", 
                                          "3/1/2021", "5/1/2021", "7/1/2021", "9/1/2021", "10/1/2021", 
                                          "1/1/2021", "3/1/2021", "5/1/2021", "7/1/2021", "9/1/2021", "10/1/2021", 
                                          "1/1/2021", "3/1/2021", "5/1/2021", "7/1/2021", "9/1/2021", "10/1/2021", 
                                          "1/1/2021", "3/1/2021", "5/1/2021", "7/1/2021", "9/1/2021", "10/1/2021", 
                                          "1/1/2021", "3/1/2021", "5/1/2021", "7/1/2021", "9/1/2021", "10/1/2021", 
                                          "1/1/2021", "3/1/2021", "5/1/2021", "7/1/2021", "9/1/2021", "10/1/2021", 
                                          "1/1/2021", "3/1/2021", "5/1/2021", "7/1/2021", "9/1/2021", "10/1/2021", 
                                          "1/1/2021", "3/1/2021", "5/1/2021", "7/1/2021", "9/1/2021", "10/1/2021", 
                                          "1/1/2021", "3/1/2021", "5/1/2021", "7/1/2021", "9/1/2021", "10/1/2021", 
                                          "1/1/2021", "3/1/2021", "5/1/2021", "7/1/2021", "9/1/2021", "10/1/2021", 
                                          "1/1/2021", "3/1/2021", "5/1/2021", "7/1/2021", "9/1/2021", "10/1/2021"
                             )), row.names = c(NA, -84L), class = "data.frame")                                                                                                                                                                    "collector")), delim = ","), class = "col_spec")\



chart_height <- test_data %>% 
  dplyr::select(Toys) %>% 
  unique() %>% 
  nrow() * 130

p <- test_data %>% ggplot(aes(x = Dates, y = Price, text = paste(paste0("Price: $", sprintf("%.2f", Price)),"<br> Date: ", Dates), group = Toys)) + 
  geom_point(size = 1.5) + 
  geom_line() + 
  facet_wrap(~Toys, scales = "free", ncol = 1) +
  theme_bw() + 
  theme(
    title = element_text(colour='black'),
    axis.title.x = element_blank(),
    axis.title.y = element_blank(),
    axis.text.x = element_text(size = rel(0.85)),
    panel.grid.major = element_line(colour = "grey70", size = 0.1),
    panel.grid.minor = element_blank(),
    panel.border = element_blank(),
    panel.spacing = unit(0.45,"cm")
  )

ggplotly(p, height = chart_height, tooltip = "text", xaxis = list(automargin = T))

Here is a picture of what I mean (highlighted portion is what I'm talking):

enter image description here

1 Answer 1

1

Not exactly sure what you mean by "x-axis is cut off" (since it is pretty clear from your picture that in fact the x-axis and tick values etc can be seen).

What I do see as a problem is that your Dates column is character. You can fix this with:

test_data <- test_data %>% mutate(Dates=as.Date(Dates, format="%m/%d/%Y"))

To add space below, you can use layout with margin:

ggplotly(p, height = chart_height, tooltip = "text", xaxis = list(automargin = T)) %>% 
  layout(margin=list(b=50))
Sign up to request clarification or add additional context in comments.

2 Comments

I'm trying to get more space between the end of the page and the dates presented on the x axis. I'll try to clear this up in the question.
okay, that is helpful - you can use margin in layout

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.