我正在从coursera学习 Julia
using DelimitedFiles
EVDdata = DelimitedFiles.readdlm("wikipediaEVDdatesconverted.csv", ',')
# extract the data
epidays = EVDdata[:,1]
EVDcasesbycountry = EVDdata[:, [4, 6, 8]]
# load Plots and plot them
using Plots
gr()
plot(epidays, EVDcasesbycountry)
Run Code Online (Sandbox Code Playgroud)
我收到错误消息 Cannot convert Array{Any,2} to series data for plotting
,但在那门课程中,讲师成功绘制了数据。我哪里出错了?
我搜索了错误,最终我将字符串解析为整数。由于数据集可能包含字符串值。
或者我还缺少其他东西吗?
我发现这对我有用:
# extract the data
epidays = Array{Integer}(EVDdata[:,1])
EVDcasesbycountry = Array{Integer}(EVDdata[:, [4, 6, 8]])
# load Plots and plot them
using Plots
gr()
plot(epidays, EVDcasesbycountry)
Run Code Online (Sandbox Code Playgroud)
很难判断 Coursera 中发生了什么,因为不清楚视频使用的是哪个版本的 Plots 和 DataFrame。
然而,您看到的错误告诉您二维数组(即矩阵)无法转换为单个系列进行绘图。这是因为plot应该用两个向量来调用,一个用于 x ,一个用于 y 值:
plot(epidays, EVData[:, 4])
Run Code Online (Sandbox Code Playgroud)
您可以循环绘制多列:
p = plot()
for c in eachcol(EVData[:, [4, 6, 8]])
plot!(p, epidays, c)
end
display(p)
Run Code Online (Sandbox Code Playgroud)
还有,它扩展了经常需要的“数据科学”绘图功能的StatsPlots.jl标准包。Plots.jl在这种情况下,您可以使用@df宏来绘制数据帧;只是引用自述文件中的示例之一:
using DataFrames, IndexedTables
df = DataFrame(a = 1:10, b = 10 .* rand(10), c = 10 .* rand(10))
@df df plot(:a, [:b :c], colour = [:red :blue])
Run Code Online (Sandbox Code Playgroud)
最后,Julia 中还有一些受图形语法启发的绘图包,它们专注于绘制 DataFrame,例如 pure-JuliaGadfly.jl或 VegaLite 包装器VegaLite.jl
| 归档时间: |
|
| 查看次数: |
2436 次 |
| 最近记录: |