Как заставить мою функцию передавать ключевые слова в подчеркивающую функцию plot - PullRequest
0 голосов
/ 06 апреля 2019

Когда я получу свои экспериментальные результаты, я хочу построить график рассеяния. Поэтому я хочу создать функцию, которая облегчит

using Plots

# result is an array of tuples (time,velocity)
experimental_result = [(1,2),(2,3),(3,5),(4,3)]

function myplot(arrayoftuple)
    len = length(arrayoftuple)
    x = [ arrayoftuple[k][1] for k in 1:len ]
    y = [ arrayoftuple[k][2] for k in 1:len ]
    plot(x,y)
end

myplot(experimental_result)

Теперь, как мне изменить функцию myplot, чтобы я мог передать любые аргументы ключевого слова в подчеркивающую функцию plot. Я ссылаюсь на ключевые аргументы, такие как title = "мой экспериментальный результат"

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019

При использовании графиков правильный ответ - написать recipe, см. https://docs.juliaplots.org/latest/recipes/. Ключевые слова автоматически передаются по рецептам. Но мне трудно сказать, какой рецепт лучше для вашего mwe, так как plot(experimental_results) уже работает из коробки. Если вы обновите свой пример до чего-то более близкого к тому, что у вас есть на самом деле, я могу показать вам, как написать рецепт для него.

0 голосов
/ 06 апреля 2019

Вы можете предоставить kwargs во внешней функции и вызывать ее из внутренней функции, как показано ниже.

using Plots

# result is an array of tuples (time,velocity)
experimental_result = [(1,2),(2,3),(3,5),(4,3)]


function myplot(arrayoftuple;kwargs...)
    len = length(arrayoftuple)
    x = [ arrayoftuple[k][1] for k in 1:len ]
    y = [ arrayoftuple[k][2] for k in 1:len ]
    plot(x,y;kwargs...)
end

myplot(experimental_result;[(:xlabel,"x"),(:title ,"my experimental result")]...)

enter image description here

...