#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. Учитывая, что сейчас на этот вопрос в основном дан ответ, было бы неплохо просто принять мой ответ, чтобы закрыть его, даже если окончательный ответ содержится в вашем вопросе!