Сюжеты savefig работает на верхнем уровне, но не внутри функции? - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь написать некоторые программы командной строки Julia для генерации и сохранения графиков.

Это работает:

#!/usr/bin/env julia
using Plots
pyplot()
plot(1:100,1:100)
savefig("foo.png")

Но это не так:

#!/usr/bin/env julia
using Plots
function main(args)
    pyplot()
    plot(1:100,1:100)
    savefig("foo.png")
end
main(ARGS)

Сбой при

ERROR: LoadError: MethodError: no method matching getindex(::PyPlot.Figure, ::Symbol)
The applicable method may be too new: running in world age 21855, while current world is 21864.

Любые мысли или указатели приветствуются, пожалуйста!

ОБНОВЛЕНИЕ - Спасибо за все предложения.Это работа вокруг:

#!/usr/bin/env julia
using Plots
function main(args)
    plot(1:100,1:100)
    savefig("foo.png")
end
pyplot()
main(ARGS)

1 Ответ

0 голосов
/ 30 мая 2018

ОБНОВЛЕНИЕ: Насколько мне известно, эта проблема не должна присутствовать в Julia v1.0

ОРИГИНАЛЬНЫЙ ОТВЕТ: Это, вероятно, больше подходит для комментария,но у меня закончились персонажи.

Это печально известная проблема "мировой эры" в Plots.Обычно это проявляется, когда вы используете GR бэкэнд, а не PyPlot, но, насколько мне известно, это может повлиять на всю экосистему Plots при определенных обстоятельствах.

Страницы выпуска для этого уже существуют здесь , здесь и здесь (и я думаю, что на самом деле есть еще один или два).Есть несколько человек, активно работающих над исправлением этого, но оказывается очень сложно полностью искоренить.

В качестве временного решения попробуйте вызвать savefig на любом случайном графике, сгенерированном вне функции, , а затем вызвать функцию (и), которая содержит график, который вы хотите сделать.,Это работает в моей системе, надеюсь, это будет работать и для вас.

...