首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ggplot2转换绘图时,绘图无法正确呈现

从ggplot2转换绘图时,绘图无法正确呈现
EN

Stack Overflow用户
提问于 2021-10-26 14:34:44
回答 1查看 47关注 0票数 0

当我从ggplot转换到plotly时,似乎刻面图上的日期不太适合页面。我希望在页面末尾和最后一个分面图上的x轴上的日期之间获得更多的空间。我尝试过动态地做这件事,但似乎行不通。有谁知道解决这个问题的方法吗?

下面是我的代码:

代码语言:javascript
复制
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))

这是我的意思的图片(突出显示的部分就是我要说的):

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-26 15:12:15

不太确定你所说的“x轴被切断”是什么意思(因为从你的图片中可以很清楚地看到x轴和滴答值等)。

我确实看到的问题是,您的Dates列是字符。您可以使用以下命令修复此问题:

代码语言:javascript
复制
test_data <- test_data %>% mutate(Dates=as.Date(Dates, format="%m/%d/%Y"))

要在下面添加空格,可以在margin中使用layout

代码语言:javascript
复制
ggplotly(p, height = chart_height, tooltip = "text", xaxis = list(automargin = T)) %>% 
  layout(margin=list(b=50))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69725083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档