我正在为R(https://rstudio.github.io/dygraphs/)使用伟大的音标包

截至目前,我的代码是:

james<-mtcars[c("mpg","drat")]
james$date<-seq(from=as.Date("2013-05-16"),to=as.Date("2013-06-16"),by="days")
x <- xts::xts(james$mpg, order.by = james$date)
p <- dygraphs::dygraph(x, main = "mpg over time", xlab = "Date", ylab = "mpg") %>%
     dygraphs::dyRangeSelector() %>%
     dyOptions(drawPoints = TRUE, pointSize = 2)
p

我想通过james$drat缩放p中点的大小,而不是将其固定为2。

我怎样才能做到这一点?

最佳答案

我认为dygraphs javascript库没有选择每个系列中的可变点大小的选项。一个非常简单的解决方法是为每个点大小创建一个系列。
假设我们需要5个不同的点大小,随james$drat的不同而不同。首先,我们根据drat的值创建一个装箱变量,其值为1-5:

drat_binned <- cut(james$drat, breaks=5, labels=1:5)

然后,我们创建该图的y变量(james$mpg)的5个副本:
james_new_variables <- matrix(rep(james$mpg, 5), nrow=nrow(james))

对于第1列,我们仅保留mpg等于1的drat_binned值,并相应地保留第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标签混为一谈。

关于javascript - 如何缩放Dygraphs中的点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31299652/

10-09 23:43