2017-01-31 14 views
1

Я пытаюсь понять, почему plotly объекты, которые преобразуются из ggplot2 объектов с помощью функции ggplotly не динамически изменять масштаб сетки при использовании plotly-х функции масштабирования на HTML виджета.ggplotly созданный объект не динамически изменять линии сетки при увеличении

Я бы хотел найти решение этого вопроса без необходимости перекодировать все участки как родные plotly объектов.

Я что-то упустил, или может быть, что эта функция просто не поддерживается в пакете plotly?

Ниже приведен пример, иллюстрирующий проблему (перед выполнением, необходимо установить переменную your.path в директории, которую вы хотите, чтобы htmlwidget быть сохранены в):

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 виджету, когда вы увеличиваете in, шкала сетки остается статической (например, линии сетки x на 100, 200, 300 являются единственными, которые вы видите, даже если вы увеличиваете масштаб. Нет новых линий сетки, например, на 25, 50, 75 и т. д.)

Сравните это с виджетами при создании графика непосредственно в сюжете с помощью этого образца кода:

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

Здесь, когда вы увеличиваете область участка, видна новая динамическая сетка.

EDIT: Может быть, что наблюдение происходит за счет htmlwidgets пакета, а не plotly или ggplot2. Но опять же, почему бы плотный графический рисунок правильно отображался при использовании htmlwidgets, в то время как преобразованный ggplot не ...?

ответ

1

Я также потратил время, пытаясь понять это, и на самом деле это довольно просто.
Установите dynamicTicks равным TRUE внутри ggplotly.
ply.ggp <- ggplotly(ggp, dynamicTicks = TRUE)
Я просто попытался создать виджет, и это сработало для меня.

+0

Вау, самый простой ответ чаще всего является правильным. Спасибо, что поделился! –