2016-07-19 4 views
2

Что является самым простым способом построения значений из примера для цикла в одно окно графика? Я пробую сюжеты, но атом не открывает никаких окон графика. Когда я пытаюсь сделать то же самое на терминале Julia, все в порядке. Пример:Julia live plot with atom

using Plots 
plot(Plots.fakedata(50,5),w=3) 

У меня есть соединение сокета от другой программы, и я хочу построить линию значений, которые я получаю. Или это возможно с PyPlot?

+0

Попробуйте использовать «plotlyjs' Plots backend – spencerlyon2

ответ

3

Чтобы отобразить окно графика, вам необходимо использовать gui().

В REPL отображаются объекты, которые возвращаются. Вот почему отображается ничего без ; (также матрицы, векторы и т. Д.). Когда вы переходите к скрипту, это уже не так (поэтому вам не нужно использовать ;). В Atom он читает его в режиме сценария, поэтому вам нужно вручную отображать вещи через display(obj), или если вы используете графики, вы можете просто использовать gui().

Чтобы отобразить вещи в том же окне сюжета, вы просто установить повторное использование = истина при установке бэкенд, т.е.

gr(reuse=true) 

Примечание вы можете также добавить show=true сделать это автоматически отображаться, когда участки выполнены вместо того, чтобы для звонка gui().

Затем, чтобы сделать живой график, просто введите новые значения в сюжет. Полный код выглядит так:

using Plots 
gr(reuse=true) 
p =plot([0;.1],[0;.2]) 
gui() 
for i=2:10 
    push!(p,i*.1,randn()) 
    gui() 
    sleep(.1) # To slow things down for show. 
end 

Этот ответ должен работать с любым бэкэнд. Примечание. Я переключился на GR.jl, так как it tends to be faster

+0

Да, теперь у меня есть окно графика! Но проблема по-прежнему заключается в построении живых значений. Если переменные сюжета поодиночке, они будут отображать точки (если я устанавливаю маркер = «o»), а не линию. Если я сделаю массив и нажмите! новое значение массива, а затем постройте его, оно будет отображать только много строк друг на друга. Есть ли способ построить живое значение как линия? Или это еще один вопрос? –

+0

@ pinq- Я отредактировал, чтобы включить способ постепенного добавления в строку. Это то, что ты искал? –

+0

Это своего рода право. Я сделал то же самое, но добавил для цикла, например: «для i = 1: 15; push! (P, i); gui(); end; Мне пришлось добавить «gui()», чтобы отобразить новую строку. Проблема в том, что она очень медленная. Может быть, потому, что он каждый раз открывает/обновляет окно. –