Определите пользовательские стили линий в Octave для использования на нескольких фигурах.

Я хотел бы определить стили линий в Octave (например, в gnuplot) для дальнейшего использования:

Я думал о чем-то подобном:

styles = {['color',[.5 .2 .8],'--', 'linewidth', 1.25], ['or', markersize, 4], 
['-sb', markersize, 2]}

plot (x,y, styles{1})
plot (x,y, styles{2})

и так далее. Но такая вещь не работала. Есть ли у кого-нибудь предложения, как это решить?

Заранее спасибо.


person Community    schedule 09.04.2019    source источник


Ответы (1)


Давайте посмотрим, что делает MATLAB, и скопируем идеи: ="nofollow noreferrer">Списки, разделенные запятыми, как аргументы вызова функции. На самом деле, есть пример, точно описывающий, чего вы хотите достичь. Тем не менее, чтобы заставить это работать так, как вы хотите, вам также необходимо «разобрать» LineSpec правильно. См. следующий фрагмент кода, чтобы получить решение для приведенных вами примеров.

x = linspace(0, 2*pi, 50);

% styles = {['color',[.5 .2 .8],'--', 'linewidth', 1.25], ['or', markersize, 4], ['-sb', markersize, 2]}

styles = {
  {'Color', [.5 .2 .8], 'LineStyle', '--', 'LineWidth', 1.25}, ...
  {'Color', 'r', 'Marker', 'o', 'MarkerSize', 4}, ...
  {'Color', 'b', 'LineStyle', '-', 'Marker', 's', 'MarkerSize', 2} ...
};

figure(1);
hold on;

for ii = 1:numel(styles)
  plot(x, sin(x + ii * pi/4), styles{ii}{:});
end

hold off;

legend();

И вот примерный вывод:

Пример вывода

person HansHirse    schedule 09.04.2019