Использование ggplotly на графике ggplot2 не работает с переменной шириной boxplot или изменением формы выбросов - PullRequest
1 голос
/ 20 января 2020

Когда я использую ggplotly на графике ggplot2, некоторые функции ggplot2 сбрасываются.

Пример кода:

library(tidyverse)
db <- iris

# Changing the N in one of the categories for the example:
db$Sepal.Length[1:40] <- NA

p <- db %>% ggplot(aes(Species, Sepal.Length)) +
geom_boxplot(varwidth = TRUE, outlier.shape = NA)

p

Picture 1

При использовании ggplotly (p) опция varwidth не работает, и возвращаемая форма круга возвращается. Это неотъемлемое качество ggplolty? Если так, как я могу получить эти опции в ggplotl2?

Picture 2

Спасибо!

1 Ответ

0 голосов
/ 20 января 2020

Похоже, что Plotly не наследует все аргументы ggplot. По крайней мере, выбросы можно изменить, следуя этой теме: https://github.com/ropensci/plotly/issues/1114

library(tidyverse)
library(plotly)
p <- iris %>% ggplot(aes(Species, Sepal.Length)) +
  geom_boxplot() 

# Need to modify the plotly object and make outlier points have opacity equal to 0
p <- plotly_build(p)

for(i in 1:length(p$x$data)) {
  p$x$data[[i]]$marker$opacity = 0
}

p

Выбросы удалены. Я не уверен, можно ли вписать var.width в сюжетные боксы.

Я не уверен, хотя var.width действительно помогает визуализации - многие люди, в том числе и я, не очень хороши в сравнении ширины столбцов ... Чтобы сравнить размер выборки, на самом деле может быть яснее фактически показать значения, например, с помощью geom_jitter:

p <- db %>% ggplot(aes(Species, Sepal.Length)) +
  geom_boxplot() +
  geom_jitter(width = 0.2)

ggplotly(p)

enter image description here

...