Шкала логарифмических c в графическом блоке для зарегистрированных данных - PullRequest
1 голос
/ 18 июня 2020

Я хочу создать коробчатую диаграмму (и, возможно, другие графики) с логарифмической c шкалой И статистикой, рассчитанной на зарегистрированных данных. В следующем примере показаны logi c.

Данные выглядят так:

d1 <- data.frame(x = rchisq(1000, 2), mod = c(rep('a', 500), rep('b', 500)))

Если я предварительно преобразовываю данные, я получаю график со значением журналов по оси Y .

plot_ly(d1, y = ~log10(x), color = ~mod, type = 'box')

enter image description here

Если я трансформирую ось Y после создания блочной диаграммы, я получаю коробчатую диаграмму с длиной усов и медианой из исходных данных и исходные данные в логарифмической шкале по оси Y.

plot_ly(d1, y = ~x, color = ~mod, type = 'box') %>%
  layout(yaxis = list(type = "log", showgrid=T,  ticks="outside", autorange=TRUE))

enter image description here

Мой желаемый результат - комбинация двух приведенных выше графиков - прямоугольная диаграмма с первого рисунка и масштаб со второго. Это должно выглядеть как то, что можно сделать в ggplot:

d1 %>% ggplot(aes(y=x, alpha = 0.1, color = mod, fill = mod))+
  geom_boxplot()+
  scale_y_log10()

enter image description here

Я пытался использовать ggploly для изменения ggplot в плотно, но он теряет масштаб и меняет его на масштаб из первой картинки.

Может ли кто-нибудь помочь с построением такого графика в plotly или как сохранить логарифмический масштаб по оси Y с помощью ggplotly?

1 Ответ

0 голосов
/ 20 июня 2020

Труднее поддерживать логарифмический масштаб при преобразовании объекта ggplot в ggplotly - для блочной диаграммы. Вы были очень близки в plot_ly. Просто добавьте tickvals=c(0.001,0.01,0.1,1,10) в макет вашего plot_ly, и вы получите следующий результат:

output

Вы можете определить диапазон вашего data и соответствующим образом определите как вектор mytickvals<-c(1,10,100), а затем в макете назначьте его как tickvals=mytickvals.

...