我正在为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。
我该怎么做?
答案 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标签混淆了。