Я учусь создавать график, аналогичный тому, который был создан ggplot, насколько это возможно, используя plotly, используя следующий скрипт:
library(dplyr)
library(ggplot2)
library(plotly);library(RColorBrewer)
library(tidyr)
set.seed(1)
data.df.st00 <- iris %>%
as_tibble %>%
mutate(year=sample(2014:2018,size = n(),replace = TRUE)) %>%
mutate(sex=sample(c('F','M'),size = n(),replace = TRUE)) %>%
mutate(origin=sample(c('Community','Hospital'),size = n(),replace = TRUE))
data.df.st01 <- data.df.st00 %>%
group_by(year,sex,origin) %>%
count(Species) %>%
ungroup
data.df.st02 <- data.df.st01 %>%
# mutate(Species= forcats::fct_rev(Species)) %>%
mutate(variable=paste0(origin,'-',sex)) %>%
select(-origin,-sex) %>%
spread(.,key = variable,value = n,fill = as.integer(0))
combn.df <- data.df.st01 %>%
distinct(origin,sex) %>%
mutate(variable=paste0(origin,'-',sex))
for (loop in 1:nrow(combn.df)) {
temp.chart.subplot <- data.df.st02 %>%
plot_ly(type='bar',
x=~year,
y=~get(combn.df$variable[loop]),
color=~Species,
colors=(brewer.pal(length(fill.list),'Set2')),
legendgroup=~Species,
showlegend=(loop==1)) %>%
layout(yaxis = list(title='n'), barmode = 'stack')
assign(paste0('chart.plotly.',loop),temp.chart.subplot)
}
chart.plotly.final <- subplot(chart.plotly.1,
chart.plotly.2,
chart.plotly.3,
chart.plotly.4,
nrows = 2,
shareY = TRUE,shareX = TRUE) %>%
layout(legend = list(x=1.02,y=0.5),
annotations = list(x=1.165,y=0.625,xref='paper',yref='paper',text='Species',showarrow=FALSE))
chart.plotly.final
Мой объект chart.plotly.final
- это субплот, содержащий chart.plotly.1
to 4
, но chart.plotly.final
дает подзаговор, содержащий 4 копии chart.plotly.4
, а это не то, что я ожидаю.
Что я сделал не так? Спасибо!