我正在尝试根据时间绘制数据:
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)
Run Code Online (Sandbox Code Playgroud)
我有这个错误:
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
Run Code Online (Sandbox Code Playgroud)
任何提示?
问题在于函数调用中将日期时间值从 DataFrame 转换为字符串值draw(...)。
请看下面的代码
我已dt为日期时间值分配了一个变量
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
Run Code Online (Sandbox Code Playgroud)
如果您尝试将其转换为字符串,则会出现以下错误
julia> dt[1] = string(dt[1])
no method convert(Type{DateTime{ISOCalendar,Zone0}},ASCIIString)
Run Code Online (Sandbox Code Playgroud)
因此出现错误
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})
Run Code Online (Sandbox Code Playgroud)
我发现的唯一解决方案是创建一个字符串数组,然后使用新的字符串数组初始化 DataFrame
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
Run Code Online (Sandbox Code Playgroud)
现在,由于我们只有字符串代替 DataFrame 中的日期时间,因此不会给出任何错误
julia> p = plot(df,x="Time",y="Heart_Rate",Geom.line)
Plot(...)
julia> draw(PNG("HeartRate.png",5inch,5inch),p)
julia>
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
1282 次 |
| 最近记录: |