R графически отображает список данных с обновлением меню - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть список фреймов данных, я хотел бы использовать updatemenu для построения графиков нужных фреймов данных.Мои кадры данных идентичны.

Temps      VA   PIB       DCF      FBCF   NetExpBien NetExpServ Pays 
2017-10-01  1 1.119052 0.8467021 0.2301707 0.01787727 0.02430174 EU28 
2018-01-01  1 1.118442 0.8449038 0.2338990 0.01726791 0.02237178 EU28 
2018-04-01  1 1.118810 0.8416101 0.2333340 0.01891264 0.02495364 EU28 
2018-07-01  1 1.119707 0.8435438 0.2384327 0.01364623 0.02408448 EU28

Изменяется только переменная "Pays".Названия списка - это переменные "Pays"

Так что я не знаю, как я могу обновить свой график и распечатать требуемые "Pays".

plot_ly(data=dd,
        x=as.factor(dd$Temps),
        y=dd$VA,
        type="bar",
        name="Valeur Ajoutée")%>%
     add_trace(y = dd$DCF, name = 'Dépense de consommation finale')%>%
     add_trace(y = dd$FBCF, name = 'Formation brute de capital fixe')%>%
     add_trace(y =dd$NetExpBien, name = 'Net export de biens')%>%
     add_trace(y = dd$NetExpServ, name = 'Net export de services')%>%
  layout(title = 'Evolution composition du PIB',
         barmode = 'group',
         updatemenus=list(
              list(
                   y=0.8,
                   buttons=list(

                   )
              )
         ))

это для RНоутбук.Если кто-то знает, как я могу это сделать

1 Ответ

0 голосов
/ 20 декабря 2018

Я работаю над этим, я пытался создать окончательный список напрямую, и зациклить весь мой список с помощью "visible=FALSE", и это сработало !!!Итак, я поделюсь с вами решением.

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

    df_conso_b<-list(data.frame(Temps=c(2017-10-01,2018-01-01,2018-04-01,2018-07-01),
        VA=c(1,1,1,1),
        PIB=c(1.119052,1.118442,1.118810,1.119707),
        DCF=c(0.8467021,0.8449038,0.8416101,0.8435438),
        FBCF=c(0.2301707,0.2338990,0.2333340,0.2384327),
        NetExpBien=c(0.01787727,0.01726791,0.01891264,0.01364623),
        NetExpServ=c(0.02430174,0.02237178,0.02495364,0.02408448),
        Pays=c("EU28","EU28","EU28","EU28")),
        data.frame(Temps=c(2017-10-01,2018-01-01,2018-04-01,2018-07-01),
        VA=c(1,1,1,1),
        PIB=c(1,1,1,1),
        DCF=c(0.84,0.83,0.82,0.81),
        FBCF=c(0.23,0.22,0.21,0.20),
        NetExpBien=c(0.017,0.015,0.018,0.013),
        NetExpServ=c(0.024,0.022,0.0249,0.028),
        Pays=c("EU","EU","EU","EU")),
data.frame(Temps=c(2017-10-01,2018-01-01,2018-04-01,2018-07-01),
    VA=c(1,1,1,1),
    PIB=c(1,1,1,1),
    DCF=c(0.70,0.71,0.72,0.73),
    FBCF=c(0.32,0.32,0.31,0.33),
    NetExpBien=c(0.14,0.15,0.28,0.32),
    NetExpServ=c(0.01,0.06,0.02,0.01),
    Pays=c("DE","DE","DE","DE")))

    names(df_conso_b)<-c("EU28","EU","DE")


dd<-df_conso_b[[1]]
recap_option<-list()
list_visible<-list()

for (i in 1:length(df_conso_b)){
     if (i==1)
          list_visible[[i]]<-c(rep(list(TRUE),5),rep(list(FALSE),(5*(length(df_conso_b)-1))))
     if (i>=2 & i<length(df_conso_b))
          list_visible[[i]]<-c(rep(list(FALSE),5*(i-1)),rep(list(TRUE),5),
                               rep(list(FALSE),(5*(length(df_conso_b)-i))))
     if (i==length(df_conso_b))
          list_visible[[i]]<-c(rep(list(FALSE),(5*(length(df_conso_b)-1))),rep(list(TRUE),5))

     recap_option[[i]]<-list(method="restyle",
               args=list("visible",list_visible[[i]]),
               label=names(df_conso_b)[i])

}


p_df_conso_b<-plot_ly(data=dd,
        x=as.factor(dd$Temps))%>%
     add_trace(y = dd$VA,type="bar", name = 'Valeur Ajoutée')%>%
     add_trace(y = dd$DCF,type="bar", name = 'Dépense de consommation finale')%>%
     add_trace(y = dd$FBCF,type="bar", name = 'Formation brute de capital fixe')%>%
     add_trace(y =dd$NetExpBien,type="bar", name = 'Net export de biens')%>%
     add_trace(y = dd$NetExpServ,type="bar", name = 'Net export de services')

for (i in 2:length(df_conso_b)){
     dd<-df_conso_b[[i]]
     p_df_conso_b<-p_df_conso_b%>%
          add_trace(y = dd$VA, name = 'Valeur Ajoutée',visible=FALSE)%>%
          add_trace(y = dd$DCF, name = 'Dépense de consommation finale',visible=FALSE)%>%
          add_trace(y = dd$FBCF, name = 'Formation brute de capital fixe',visible=FALSE)%>%
          add_trace(y =dd$NetExpBien, name = 'Net export de biens',visible=FALSE)%>%
          add_trace(y = dd$NetExpServ, name = 'Net export de services',visible=FALSE)
} 

p_df_conso_b%>%layout(title = 'Evolution composition du PIB',
         barmode = 'group',
         updatemenus=list(
              list(
                   y=0.8,
                   buttons=recap_option
              )
         ))
...