Я думаю, что это такая ситуация, которая обычно возникает в науке о данных.
У меня есть некоторые данные, по которым я провожу статистический тест, и я хочу построить данные вместе с результатамистатистический тест на одном графике.
Вот пример:
Данные представляют собой два распределения (из двух групп):
library(dplyr)
set.seed(1)
data.df <- data.frame(val = c(rnorm(100,0,1),rnorm(100,1,1)),
group = c(rep("A",100),rep("B",100)))
Я отображаю эти данные с использованием плотностисюжет:
density.df <- do.call(rbind,lapply(levels(data.df$group),function(g){
dens <- density(dplyr::filter(data.df,group == g)$val)
data.frame(x = dens$x, y = dens$y, group = g)
}))
library(plotly)
density.plot <- plot_ly(x = density.df$x, y = density.df$y, type = 'scatter', mode = 'lines',color = density.df$group) %>%
layout(xaxis = list(title= "Value", zeroline = F), yaxis = list(title = "Density", zeroline = F))
Что дает:
И давайте предположим, что я подобрал для них некоторую статистическую модель с двумя интересующими факторами и получил эти результаты:
effects.df <- data.frame(effect = c(0.5, 0.75), effect.error = c(0.05,0.1), factor = c("Factor-A","Factor-B"))
Я отображаю эти данные на так называемом участке гусеницы:
effects.plot <- plot_ly(type = 'scatter', mode = "markers", marker = list(size = 13, color = "black"),
x = effects.df$effect, y = effects.df$factor, showlegend = F) %>%
layout(xaxis = list(range=c(-1,1), title = "Effect Size", zeroline = T, showticklabels = T, font = list(size=15)),
yaxis = list(title = NA, zeroline = F, showticklabels = T, tickvals = effects.df$factor, ticktext = as.character(effects.df$factor)), font = list(size = 15)) %>%
add_trace(error_x = list(array = effects.df$effect.error, width = 5, color = "black"), showlegend = F)
, что дает:
Теперь я хотел бы добавить effects.plot
в качестве вставки в верхний правый сектор density.plot
.Я специально добавляю его как вставку, а не группирую их с помощью функции plotly
subplot
.
Так что мой вопрос: как мне это сделать?
plotly
есть пример добавления вставок, но мои попытки вписать мой случай в это не увенчались успехом.
Есть идеи?