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

#octave #linestyle

#октава #стиль линий

Вопрос:

Я хотел бы определить стили линий в 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})
  

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

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

Ответ №1:

Давайте посмотрим, что делает MATLAB, и скопируем идеи: вы можете использовать списки, разделенные запятыми, в качестве аргументов вызова функции. На самом деле, есть пример, точно описывающий, чего вы хотите достичь. Тем не менее, чтобы заставить это работать так, как вам хотелось бы, вам также нужно 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();
  

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

Примерный вывод