當我從 ggplot 轉換為 plotly 時,構面圖上的日期似乎不太適合頁面。我希望在頁面末尾和最后一個分面圖中 x 軸上的日期之間獲得更多空間。我嘗試動態執行此操作,但似乎不起作用。有誰知道解決這個問題的方法?
這是我的代碼:
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))
這是我的意思的圖片(突出顯示的部分是我在說什么):

uj5u.com熱心網友回復:
不完全確定您所說的“x 軸被切斷”是什么意思(因為從您的圖片中可以很清楚地看出,實際上可以看到 x 軸和刻度值等)。
我認為的一個問題是您的Dates專欄是個性化的。您可以通過以下方式解決此問題:
test_data <- test_data %>% mutate(Dates=as.Date(Dates, format="%m/%d/%Y"))
要在下面添加空間,您可以使用layoutwith margin:
ggplotly(p, height = chart_height, tooltip = "text", xaxis = list(automargin = T)) %>%
layout(margin=list(b=50))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/338240.html
