首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“朱莉娅”中没有显示的情节

“朱莉娅”中没有显示的情节
EN

Stack Overflow用户
提问于 2022-09-04 11:58:06
回答 1查看 348关注 0票数 0

我有一个名为mycode.jl的文件,下面的代码摘自这里

代码语言:javascript
复制
using MultivariateStats, RDatasets, Plots

# load iris dataset
println("loading iris dataset:")
iris = dataset("datasets", "iris")
println(iris)
println("loaded; splitting dataset: ")

# split half to training set
Xtr = Matrix(iris[1:2:end,1:4])'
Xtr_labels = Vector(iris[1:2:end,5])

# split other half to testing set
Xte = Matrix(iris[2:2:end,1:4])'
Xte_labels = Vector(iris[2:2:end,5])

print("split; Performing PCA: ")


# Suppose Xtr and Xte are training and testing data matrix, with each observation in a column. We train a PCA model, allowing up to 3 dimensions:
M = fit(PCA, Xtr; maxoutdim=3)
println(M)

# Then, apply PCA model to the testing set
Yte = predict(M, Xte)
println(Yte)


# And, reconstruct testing observations (approximately) to the original space
Xr = reconstruct(M, Yte)
println(Xr)

# Now, we group results by testing set labels for color coding and visualize first 3 principal components in 3D plot
println("Plotting fn:")
setosa = Yte[:,Xte_labels.=="setosa"]
versicolor = Yte[:,Xte_labels.=="versicolor"]
virginica = Yte[:,Xte_labels.=="virginica"]

p = scatter(setosa[1,:],setosa[2,:],setosa[3,:],marker=:circle,linewidth=0)
scatter!(versicolor[1,:],versicolor[2,:],versicolor[3,:],marker=:circle,linewidth=0)
scatter!(virginica[1,:],virginica[2,:],virginica[3,:],marker=:circle,linewidth=0)
plot!(p,xlabel="PC1",ylabel="PC2",zlabel="PC3")

println("Reached end of program.")

我在Linux终端上使用命令运行上面的代码:julia mycode.jl

代码运行正常,并达到尾声,但情节没有出现。

问题在哪里,如何解决。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-04 12:05:29

正如地块文档的输出部分所说:

只有当返回时(分号将抑制返回),或者显式地用display(plt)、gui()显示,或者将show = true添加到绘图命令中,才会显示绘图。通过设置默认值: default(show = true),您可以具有类似MATLAB的交互行为。

关于“何时返回”的第一部分是关于何时从REPL (或木星等)调用plot,而不适用于这里。

在这里,您可以使用其他选项之一:

  • 在上次display(p)调用之后调用plot! (这是最常见的方法)
  • 在上一次gui()之后调用plot!
  • 向上一次show = true调用添加一个plot!参数
  • 通过在脚本开头设置Plots.default(show = true),将默认设置设置为始终显示绘图

其中任何一个都足以使绘图窗口出现。

情节在Julia过程结束时结束,如果这种情况发生得太快,您可以:

  1. 在终端上以julia -i mycode.jl的形式运行您的代码--这将运行您的代码,显示情节,然后将您降落到Julia。这将使绘图保持打开状态,并允许您在需要时进一步处理代码中的变量。
  2. 在程序的末尾添加一个readline()调用。这将使Julia等待额外的换行符/Enter/ remain键的按下,而情节将继续显示,直到您按下该键。

(这些建议归功于朱莉娅语篇研究。)

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

https://stackoverflow.com/questions/73599180

复制
相关文章

相似问题

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