Сначала мы создаем набор данных в R
n=10
SlNO<-c(1:n)
df<-data.frame("SlNo"=SlNO, "Val1"=c(1:10), "Val2"=c(1:10), "Val3"=c(1:10),
"Val4"=c(1:10), "Val5"=c(1:10))
df
Затем мы создаем график с использованием этого фрейма данных
library(plotly)
plot_ly(data=df, x = ~df[,"SlNo"])%>%
add_bars( x = ~SlNo, y =~Val2, data = df, inherit = T, marker =
list(color
= "#82e600"), yaxis = 'y2', name="Val2")%>%
add_trace(y = ~df[,'Val3'], name = 'Va3',mode = 'line')%>%
add_trace(y = ~df[,'Val4'], name = 'Val4',mode = 'line')%>%
add_trace(y = ~df[,'Val5'], name = 'Val5',mode = 'line')%>%
add_trace(y = ~df[,'Val1'], name = 'Val1',mode = 'line')%>%
layout(title = 'Chart',
xaxis = list(title ="SlNo" ),
yaxis = list(rangemode='tozero',side = 'left', title = 'Count',
showgrid = FALSE, zeroline = TRUE),
yaxis2 = list(side = 'right', overlaying = "y", title = "Val3",
showgrid = FALSE, zeroline = TRUE))
Диаграмма генерируется
Далее япытаясь автоматизировать это так, что если я изменю N, мне не нужно переписывать всю формулу
Мы перечислим имена фрейма данных df и создадим новый фрейм данных с именем df2 с
names1<-names(df)
df2<-data.frame("SLno"=1:length(names1),'names1'=names1)
df2<-df2[2:nrow(df2),]
Затем мы создадим вторую часть формулы, в которой определены трассы
df2$formula<-paste0("add_trace(y=~df[,",df2$names1, "], name =",
df2$names1,", mode= 'line')%>%" )
midpart= df2$formula
Теперь мы создадим первую и третью части формулы
firstpart=paste0("plot_ly(data=df, x = ~df[,'SlNo'])%>%
add_bars( x = ~SlNo, y =~Val2, data = df, inherit = T, marker =
list(color = '#82e600'), yaxis = 'y2', name='Val2')%>%")
# create thirdpart
thirdpart="layout(title = 'Chart',
xaxis = list(title ='SlNo' ),
yaxis = list(rangemode='tozero',side = 'left', title = 'Count',
showgrid = FALSE, zeroline = TRUE),
yaxis2 = list(side = 'right', overlaying = 'y', title = 'Val3',
showgrid = FALSE, zeroline = TRUE))"
Now we create the script for the chart
form1<-(c(firstpart, midpart, thirdpart))
Объект form1 создан, ноневозможно отобразить диаграмму.Я прошу некоторую помощь здесь.