首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gadfly.jl :如何绘制基于日期和时间的图表?

Gadfly.jl :如何绘制基于日期和时间的图表?
EN

Stack Overflow用户
提问于 2014-03-20 22:51:47
回答 1查看 1.7K关注 0票数 6

我正在尝试根据时间绘制数据:

代码语言:javascript
复制
userId = 2
dateGiven = Datetime.date(2014,2,3)
biometric = "heart-rate"
df = DataFrames.readtable(string("data/user_",userId,"/",dateGiven,"/",biometric,".csv"),
                      colnames = ["Time", "Heart Rate"],
                      coltypes = {Int,Int}  )

df["Time"] = map((timestamp) -> Datetime.unix2datetime(timestamp, Datetime.UTC) , df["Time"])
plot(df,x="Time",y="Heart Rate",Geom.line)

我有这个错误:

代码语言:javascript
复制
no method *(Float64,DateTime{ISOCalendar,Zone0})
 in optimize_ticks at /Users/nhenin/.julia/v0.2/Gadfly/src/ticks.jl:77
 in apply_statistic at /Users/nhenin/.julia/v0.2/Gadfly/src/statistics.jl:584
 in apply_statistics at /Users/nhenin/.julia/v0.2/Gadfly/src/statistics.jl:35
 in render at /Users/nhenin/.julia/v0.2/Gadfly/src/Gadfly.jl:636
 in writemime at /Users/nhenin/.julia/v0.2/Gadfly/src/Gadfly.jl:738
 in sprint at io.jl:434
 in display_dict at /Users/nhenin/.julia/v0.2/IJulia/src/execute_request.jl:35

有什么提示吗?

EN

回答 1

Stack Overflow用户

发布于 2014-03-21 20:23:39

问题是在函数调用draw(...)中将DateTime值从DataFrame转换为String值。

请参阅以下代码

我为DateTime值分配了一个变量dt

代码语言:javascript
复制
julia>dt
100-element Array{DateTime{ISOCalendar,Zone0},1}:
2014-03-21T11:48:10 UTC
2014-03-21T11:48:11 UTC
2014-03-21T11:48:12 UTC
.
.
.
2014-03-21T11:49:47 UTC
2014-03-21T11:49:48 UTC
2014-03-21T11:49:49 UTC

如果您甚至尝试将其转换为字符串,则会出现以下错误

代码语言:javascript
复制
julia> dt[1] = string(dt[1])
no method convert(Type{DateTime{ISOCalendar,Zone0}},ASCIIString)

因此出现了错误

代码语言:javascript
复制
julia> p = plot(Df,x="Time",y="Heart_Rate",Geom.line)
Plot(...)

julia> draw(PNG("HeartRate.png",5inch,5inch),p)
no method *(Float64,DateTime{ISOCalendar,Zone0})

我找到的唯一解决方案是创建一个字符串数组,然后用新的字符串数组初始化DataFrame

代码语言:javascript
复制
julia> dt_str = Array(Any,length(dt))
julia> for i=1:length(dt)
dt_str[i] = string(dt[i]);
end

julia> Df = DataFrame(Time = dt_str,Heart_Rate = heart_rate)
100x2 DataFrame:
                               Time Heart_Rate
[1,]      "2014-03-21T11:48:10 UTC"    76.2317
[2,]      "2014-03-21T11:48:11 UTC"    80.0101
[3,]      "2014-03-21T11:48:12 UTC"    66.6338
.
.
.
[98,]     "2014-03-21T11:49:47 UTC"    96.9248
[99,]     "2014-03-21T11:49:48 UTC"    94.6423
[100,]    "2014-03-21T11:49:49 UTC"    92.9679

现在,因为我们在DataFrame中只有字符串代替了Datetime,所以不会给出任何类型的错误

代码语言:javascript
复制
julia> p = plot(df,x="Time",y="Heart_Rate",Geom.line)
Plot(...)

julia> draw(PNG("HeartRate.png",5inch,5inch),p)


julia> 

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22536691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档