Читаемость с использованием матричного ввода - PullRequest
0 голосов
/ 07 сентября 2018

Я понял, что матрицы для хранения числовых данных намного быстрее, чем любой другой формат в R. Интересно, что они также могут быть использованы для ускорения моего plotly кода. Что желательно, потому что пересчет plotly -площадок, например, в блестящем приложении может быть медленно.

Однако читаемость в сюжете страдает много . Если мне нужен линейный сюжет вместе с текстом и, возможно, несколькими точками, код выглядит следующим образом:

### Creating sample data
mysim=cbind(x=rep(1:4,4),y=round(runif(16)*10,1),id=rep(1:4,each=4))

plot_ly() %>%
  add_trace(x=mysim[mysim[,'id']==1,'x'],y=mysim[mysim[,'id']==1,'y'],
            type='scatter',mode='lines',opacity=0.9,hoverinfo='skip',
            line=list(color='#AAAAAA',dash='dashed')) %>%
  add_trace(x=mysim[mysim[,'id']==2,'x'],y=mysim[mysim[,'id']==2,'y'],
            type='scatter',mode='text',
            hoverinfo='y',text=mysim[mysim[,'id']==2,'y']) %>%
  add_trace(x=mysim[mysim[,'id']==3,'x'],y=mysim[mysim[,'id']==3,'y'],
            type='scatter',mode='lines',
            line=list(color='#17becf',dash='solid'),hoverinfo='x') %>%
  add_trace(x=mysim[mysim[,'id']==4,'x'],y=mysim[mysim[,'id']==4,'y'],
            type='scatter',mode='marker')

Это выглядит не очень хорошо, верно?

Есть ли способ сделать этот код более читабельным, не делая его медленнее? Поскольку кодирование такого рода графиков plotly кажется мне громоздким (даже при использовании data.frames), я думаю о отправив это на Github как открытый вопрос. Поэтому я хочу быть уверенным, что я что-то не пропустил.

Я пытался улучшить читаемость

  • с использованием аргумента split внутри plot_ly -wrapper (просто строит каждую трассировку четыре раза)
  • с использованием data=mysim[mysim[,'id']==1,] и x=~x или x=~'x' в add_trace (возвращает ошибку)
...