Автоматизация многократного рассеяния - PullRequest
0 голосов
/ 04 декабря 2018

Сначала мы создаем набор данных в 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 создан, ноневозможно отобразить диаграмму.Я прошу некоторую помощь здесь.

...