Julia 无法将数组{Any,2}转换为用于打印的系列数据

Julia 无法将数组{Any,2}转换为用于打印的系列数据,julia,Julia,我正在学习《朱莉娅》这本书 我收到错误消息无法将数组{Any,2}转换为用于绘图的系列数据 但在这门课程中,讲师成功地绘制了数据。我错在哪里 我搜索了一个错误,在这个错误中,我调用了将字符串解析为整数的方法。因为数据集可能包含字符串值 还是我错过了什么 很难判断Coursera中发生了什么,因为不清楚视频使用的是什么版本的情节和数据帧 但是,您看到的错误告诉您,二维数组(即矩阵)无法转换为单个系列进行打印。这是因为plot应该用两个向量调用,一个用于x,一个用于y值: plot(epidays,

我正在学习《朱莉娅》这本书

我收到错误消息
无法将数组{Any,2}转换为用于绘图的系列数据
但在这门课程中,讲师成功地绘制了数据。我错在哪里

我搜索了一个错误,在这个错误中,我调用了将字符串解析为整数的方法。因为数据集可能包含字符串值


还是我错过了什么

很难判断Coursera中发生了什么,因为不清楚视频使用的是什么版本的情节和数据帧

但是,您看到的错误告诉您,二维数组(即矩阵)无法转换为单个系列进行打印。这是因为
plot
应该用两个向量调用,一个用于x,一个用于y值:

plot(epidays, EVData[:, 4])
可以在循环中打印多个列:

p = plot()
for c in eachcol(EVData[:, [4, 6, 8]])
    plot!(p, epidays, c)
end
display(p)
还有,它扩展了标准的
Plots.jl
软件包,用于经常需要的“data science-y”绘图功能。在这种情况下,您可以使用
@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])
最后,Julia中还有一些图形绘图软件包语法,这些软件包主要用于绘制数据帧,例如纯Julia或VegaLite包装,您也可以试试这个

using StatsPlots 
gr()
using DataFrames, IndexedTables
df = DataFrame(EVDdata)
@df df plot(:x1, [:x4 :x6 :x8], marker = ([:octagon :star7 :square], 9), title = "EVD in West Africa, epidemic segregated by country", xlabel   = "Days since 22 March 2014",ylabel   = "Number of cases to date",line = (:scatter), colour = [:red :blue :black])

另一方面,本教程(显然)与coursera情节相同,而且效果良好。

我也不知道为什么

更新:工作人员的回答可能是“Julia不再支持绘图‘Array{Any,2}’”,一个简单的解决方法是将EVDcasesbycountry数据转换为Int,这样做:

epidays = EVDdata[:,1]
EVDcasesbycountry = convert.(Int, EVDdata[:, [4, 6, 8]])
这对我来说很有效,并且与我的第一个答案有点一致,因为当我检查x和y的类型时,它们与epidays和EVDcasesbycountry的数据不同。

这包含了一些很好的例子

到了这个问题,你可以通过向量代替矩阵来绘图

using Plots
gr()
y = Vector[EVData[:,4],EVData[:,6],EVData[:,8]]
plot(
epidays,y,
color = [:black :orange :red],
line = (:scatter),
marker = ([:hex :d :star4],5)
)

我发现这对我有用:

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

谢谢你的回复。第一个使用for循环的代码给出了一个错误
UndefVarError:eachcol未定义
,第二个使用数据帧的代码给出了一个错误
UndefVarError:@df未定义
`对不起,这是一个输入错误-
eachcol
是一个函数,上面已经更正。至于第二个错误,您是否使用了
StatsPlots
?是的,第一个代码现在正在工作,但是在安装
StatsPlots
的第二个代码中,我在生成“Arpack”时遇到了一个错误
错误:
很高兴您能让它工作!对于Statsplots,您可能想问一个单独的问题,或者最好在Julia Discussion论坛上提问,因为这些类型的安装问题通常很难以SOThanks这样的格式进行调试。谢谢您的建议!我和OP有同样的问题,这解决了它!
using Plots
gr()
y = Vector[EVData[:,4],EVData[:,6],EVData[:,8]]
plot(
epidays,y,
color = [:black :orange :red],
line = (:scatter),
marker = ([:hex :d :star4],5)
)
# 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)