Я хотел бы определить стили линий в 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})
и так далее. Но такая вещь не работала. Есть ли у кого-нибудь предложения, как это решить?
Заранее спасибо.
Давайте посмотрим, что делает 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();
И вот примерный вывод: