ggplotly 创建的对象在放大时不会动态调整网格线

ggplotly created object does not dynamically adjust gridlines when zooming in

我试图理解为什么使用 ggplotly 函数从 ggplot2 对象转换而来的 plotly 对象在对 html 小部件。

我想找到一个解决方案,而不需要将所有地块重新编码为原生 plotly 对象。

我是不是遗漏了什么,或者可能是 plotly 包中还不支持此功能?

下面是一些说明问题的示例代码(在执行之前,您需要将 your.path 变量设置为要保存 html 小部件的目录):

library(ggplot2)
library(plotly)
library(htmlwidgets)

ggp <- ggplot(data=mtcars, aes(x=hp, y=mpg)) + geom_point() + theme_bw()
ply.ggp <- ggplotly(ggp)
saveWidget(ply.ggp, paste(your.path, "mtcarsGGPLOT.html", sep=""))

在这个 html 小部件上,当您放大时,网格比例保持不变(例如,即使您放大,您也只能看到 100、200、300 上的 x 网格线。有没有新的网格线可见,例如在 25、50、75 等处)

将此与使用此示例代码直接在 plotly 中创建绘图时的小部件进行比较:

ply <- plot_ly(data=mtcars, x=mtcars$hp, y=mtcars$mpg)
saveWidget(ply, paste(your.path, "mtcarsNATIVE.html", sep=""))

在这里,当您放大绘图区域时,可以看到一个新的动态网格。

编辑: 观察结果可能是由于 htmlwidgets 包而不是 plotlyggplot2 引起的。但是话又说回来,为什么在使用 html 小部件时原生 plotly 图形会正确呈现,而 ggplot 转换后的小部件却不能..?

我也花时间弄明白了,其实很简单。
在 ggplotly 中将 dynamicTicks 设置为 TRUE。
ply.ggp <- ggplotly(ggp, dynamicTicks = TRUE)
我刚刚尝试创建小部件,它对我有用。