Несколько участков на одном и том же рисунке Джулия

#julia #plots.jl #julia-plots

Вопрос:

Я пишу программу Julia, которая итеративно запускает другую функцию и даст мне два набора результатов. Я хочу отобразить эти результаты, и прямо сейчас я делаю то, чтобы отобразить результаты каждого for цикла отдельно, что дает мне около 20 графиков для примера ниже: скажите что-то вроде этого:

 for i in 1:10  x1,y1 = first_function(a,b,c)  plot(x1,y1) end for j in 1:10  x2,y2 = second_function(a,b,c)  plot(x2,y2) end   

Я попытался использовать plot!() вместо этого команду, но это дает мне все 20 участков на одном участке, чего я не хочу. Что я хотел бы сделать, так это отобразить результаты обеих функций на одном и том же графике для каждой итерации. Например, мне нужно 10 участков, по одному для каждой итерации, где каждый участок имеет результаты first_function() как second_function того, так и другого . Вместо этого я попробовал следующее:

 for j in 1:10  x1,y1 = first_function(a,b,c)  x2,y2 = second_function(a,b,c)  plot!(x1,y1)  plot!(x2,y2) end  

Однако, похоже, это тоже не работает.

РЕДАКТИРОВАТЬ: Основываясь на полученном ответе, я смог понять, что следующее делает свое дело:

 for i in 1:10  x1,y1 = first_function(a,b,c)  x2,y2 = second_function(a,b,c)  plot(x1,y1)  plot!(x2,y2) end  

Это создает новый график в конце каждой итерации цикла, чего я и хотел.

Ответ №1:

Как вы уже выяснили, plot() создает новый участок, в то время plot!() как строит на текущем активном участке.

Все, что вам нужно сделать, это четко указать, когда вы хотите что-то сделать, и если вы используете plot!() , также четко укажите, к какому объекту графика вы хотите построить график. Так что что-то вроде:

 p1 = plot() p2 = plot()  for i in 1:10  plot!(p1, first_function(a, b, c)...)  plot!(p2, second_function(a, b, c)...) end  

затем p1 должно быть 10 строк , показывающих результат first_function , и p2 10 строк с результатами второй функции.

Мне неясно, хотите ли вы, чтобы оба этих графика отображались на одной и той же фигуре, но если вы это сделаете, то plot(p1, p2) создадите фигуру с двумя подзаголовками.

Комментарии:

1. Я хотел, чтобы первая итерация обеих функций выполнялась на одном графике, вторая итерация для обеих функций на другом графике и так далее, в общей сложности 10 графиков (в данном случае). Так что это не совсем то, чего я хотел. Однако, основываясь на том, что вы сказали, я попробовал вместо этого кое-что другое, о чем я упомянул в качестве правки своего поста, и это, похоже, сработало. Спасибо!

2. Приятно слышать и извините, что не читал должным образом — вы ясно сказали, что хотите 10 сюжетов! Возможно, вы уже поняли это, но только для потомков, если вы действительно хотите видеть графики на каждой итерации цикла, у вас есть для display них, так как цикл не вернет объект графика.

3. Да, я это понял и добавил display . Спасибо!

4. Учитывая, что сейчас на этот вопрос в основном дан ответ, было бы неплохо просто принять мой ответ, чтобы закрыть его, даже если окончательный ответ содержится в вашем вопросе!