Определите пользовательские стили линий в Octave для использования на нескольких фигурах - PullRequest
2 голосов
/ 09 апреля 2019

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

4 голосов
/ 09 апреля 2019

Давайте посмотрим, что делает 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();

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

Exemplary output

...