Я понял, что матрицы для хранения числовых данных намного быстрее, чем любой другой формат в 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
(возвращает ошибку)