R Plotly范围滑块遮盖了刻度标签 - 是否可以设置范围滑块的位置?

3
我在R中使用Plotly包制作带有区间滑块和范围选择器的图表。问题是,区间滑块往往会遮盖x轴刻度标签。解决方法可能是手动设置区间滑块的位置,但我似乎找不到任何关于如何执行此操作的文档。下面是一个最小工作示例以及它的图片。
# Make Some Data: 
Dates = as.POSIXct(c("2017-08-08 00:00")) + (0:71)*60^2
Values = rep_len(mtcars$mpg, 72)
tb =  dplyr::tibble(Values, Dates)

# Plot
p = tb %>% plot_ly(type = "scatter", mode = 'markers', x = ~Dates, y = ~Values) %>% 
            layout(xaxis = list(
              rangeslider = list(type = "date"),
              rangeselector = list(
                buttons = list(list(step = "all", label = "All")))
              ))
p

任何帮助都将不胜感激! 谢谢。
以下是需要翻译的内容:

"Note how some of the dates are covered"


奇怪的是,相同的代码给我提供了一个没有重叠的图。你的所有软件包都更新了吗?这是来自闪亮应用程序的截图吗 - 可能是一些奇怪的CSS? - Florian
不是的,这是在RStudio内置查看器(最大化)中的截图,但当我使用Shiny时也会出现同样的情况。昨天我直接从GitHub下载了所有的包,所以不应该有任何问题。 - JesperHansen
你已经安装了开发版本吗?也许可以安装来自CRAN的软件包。 - Florian
我检查了一下,在R和Rstudio中都出现了这个问题,但是如果我逐渐减小窗口的高度,那么在某个点上重叠就会消失。 - Marco Sandri
从CRAN安装软件包并没有解决问题。正如@MarcoSandri所提到的,可以通过逐渐减小窗口的高度来消除重叠。问题在于最终我将在Shiny中使用图表,在那里用户无法减小窗口的高度。 :-/ - JesperHansen
2个回答

3
通过调整各种选项/设置,我发现增加刻度线长度,并让刻度线出现在x轴内部而不是外部,解决了我的问题。
请参见下面的代码示例。
# Make Some Data: 
Dates = as.POSIXct(c("2017-08-08 00:00")) + (0:71)*60^2 
Values = rep_len(mtcars$mpg, 72)
tb =  dplyr::tibble(Values, Dates)

# Plot
p = tb %>% plot_ly(type = "scatter", mode = 'markers', x = ~Dates, y = ~Values) %>% 
        layout(xaxis = list(ticks = "inside", ticklen = 10,
          rangeslider = list(type = "date", thickness=0.1),
          rangeselector = list(
            buttons = list(list(step = "all", label = "All")))
          ))
p

然而,这是一个黑客解决方案,我仍在寻找一种方法来设置范围滑块的位置。

1
尝试通过调整rangesliderthickness参数来解决重叠问题:
# Make Some Data: 
Dates = as.POSIXct(c("2017-08-08 00:00")) + (0:71)*60^2
Values = rep_len(mtcars$mpg, 72)
tb =  dplyr::tibble(Values, Dates)

# Plot
p = tb %>% plot_ly(type = "scatter", mode = 'markers', x = ~Dates, y = ~Values) %>% 
            layout(xaxis = list(
              rangeslider = list(type = "date", thickness=0.3),
              rangeselector = list(
                buttons = list(list(step = "all", label = "All")))
              ))
p

希望它能帮到你。

很遗憾,这并没有帮助。 - JesperHansen
@JeppeS。很奇怪,这个技巧解决了我的R和Rstudio的问题。你试过用thickness = 0.1、0.2等吗? - Marco Sandri
是的,看起来它能够工作,但当我最大化窗口时问题又出现了。然而,我在下面发布的解决方案似乎在任何情况下都能够工作。 - JesperHansen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接