无法将 Array{Any,2} 转换为系列数据以进行绘图

Ani*_*ode 6 julia

我正在从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 ,但在那门课程中,讲师成功绘制了数据。我哪里出错了?

我搜索了错误,最终我将字符串解析为整数。由于数据集可能包含字符串值。

或者我还缺少其他东西吗?

Ren*_*ene 6

我发现这对我有用:

# 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)


Nil*_*dat 3

很难判断 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