Penso che la libreria javascript di dygraphs non abbia opzioni per la variazione delle dimensioni dei punti all'interno di ogni serie. Una soluzione abbastanza semplice è creare una serie per ogni dimensione in punti.
Supponiamo di volere 5 punti di dimensioni diverse, variando con james$drat
. In primo luogo, creiamo una variabile categorizzata con valori 1-5 a seconda del valore di drat
:
drat_binned <- cut(james$drat, breaks=5, labels=1:5)
viene creato 5 copie della variabile y del plot (james$mpg
):
james_new_variables <- matrix(rep(james$mpg, 5), nrow=nrow(james))
Per numero di colonna 1 manteniamo solo i valori mpg
dove drat_binned
è uguale a 1 e corrispondentemente per le colonne numero 2-5. Le variabili sono poi aggiunti al set di dati originale:
for (i in 1:5)
james_new_variables[drat_binned != i, i] <- NA
james <- data.frame(james, james_new_variables)
Poi facciamo una nuova dygraph
della variabile originale più le nuove variabili (di default denominato X1-X5
):
x <- xts::xts(james[,c("mpg","X1","X2","X3","X4","X5")], order.by = james$date)
p <- dygraphs::dygraph(x, main = "mpg over time", xlab = "Date", ylab = "mpg") %>%
dygraphs::dyRangeSelector() %>%
dySeries("mpg") %>%
dySeries("X1", color="blue", drawPoints = TRUE, pointSize = 2) %>%
dySeries("X2", color="blue", drawPoints = TRUE, pointSize = 3) %>%
dySeries("X3", color="blue", drawPoints = TRUE, pointSize = 4) %>%
dySeries("X4", color="blue", drawPoints = TRUE, pointSize = 5) %>%
dySeries("X5", color="blue", drawPoints = TRUE, pointSize = 6) %>%
p
Non molto elegante, ma una specie di opere. L'unica cosa che rivela il trucco utilizzato è la leggenda, che diventa incasinata con le etichette X1-X5.