带有更新菜单的 R 数据框列表
R plotly list of dataframe with updatemenu
我有一个数据框列表,我想在 plotly 中使用 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 Notebook。如果有人知道我该怎么做
我在努力,我尝试直接创建最终列表,并用 "visible=FALSE"
循环绘制我的所有列表,它成功了!所以我把解决方法分享给大家。
只是一个小问题,当我打印图形时,我想增加它,条形逐渐消失,如果我 return window 原始大小,则恢复正常,如果有人可以帮助我,请
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
)
))
我有一个数据框列表,我想在 plotly 中使用 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 Notebook。如果有人知道我该怎么做
我在努力,我尝试直接创建最终列表,并用 "visible=FALSE"
循环绘制我的所有列表,它成功了!所以我把解决方法分享给大家。
只是一个小问题,当我打印图形时,我想增加它,条形逐渐消失,如果我 return window 原始大小,则恢复正常,如果有人可以帮助我,请
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
)
))