如何在Dygraphs中缩放点?

时间:2015-07-08 17:30:37

标签: javascript r dygraphs

我正在为R(https://rstudio.github.io/dygraphs/

使用伟大的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

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

我该怎么做?

2 个答案:

答案 0 :(得分:3)

我知道这是一个老问题,但我找到了使用import os import csv import sys from openpyxl import Workbook reload(sys) sys.setdefaultencoding('utf8') if __name__ == '__main__': workbook = Workbook() worksheet = workbook.active with open('input.csv', 'r') as f: reader = csv.reader(f) for r, row in enumerate(reader): for c, col in enumerate(row): for idx, val in enumerate(col.split(',')): cell = worksheet.cell(row=r+1, column=c+1) cell.value = val workbook.save('output.xlsx') 的潜在解决方案。我希望它可以帮助那里的人。如果您不想使用原始数字,可以选择R或JavaScript中的比例。

drawPointCallback

答案 1 :(得分:1)

我认为dygraphs javascript库没有选择在每个系列中改变点大小。一个非常简单的解决方法是为每个点大小创建一个系列 我们假设我们想要5个不同的点大小,随着james$drat而变化。首先,我们创建一个值为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值{1}}等于1的值,对应列号2-5。然后将变量添加到原始数据集中:

drat_binned

然后我们创建原始变量的新for (i in 1:5) james_new_variables[drat_binned != i, i] <- NA james <- data.frame(james, james_new_variables) 加上新变量(默认名为dygraph):

X1-X5

不是很优雅,但有点作品。揭示使用技巧的唯一因素是传奇,它与X1-X5标签混淆了。