Я думаю, что библиотека javascript dygraphs не имеет возможности варьировать размер точки в каждой серии. Простым решением является создание одной серии для каждого размера точки.
Скажем, мы хотим 5 разных точечных размеров, варьирующихся от james$drat
. Во-первых, мы создаем Binned переменную со значениями 1-5, в зависимости от значения drat
:
drat_binned <- cut(james$drat, breaks=5, labels=1:5)
Затем мы создаем 5 копий переменной у сюжета (в james$mpg
):
james_new_variables <- matrix(rep(james$mpg, 5), nrow=nrow(james))
для номера столбца 1 мы сохраняем только значения mpg
, где drat_binned
равно 1, и соответственно для столбцов с номером 2-5. Переменные затем добавляются к исходному набору данных:
for (i in 1:5)
james_new_variables[drat_binned != i, i] <- NA
james <- data.frame(james, james_new_variables)
Затем мы делаем новое dygraph
исходной переменной плюс новые переменные (по умолчанию называется 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
Не очень элегантный, но вроде работ. Единственное, что показывает трюк, это легенда, которая становится испорченной ярлыками X1-X5.