2

我想在 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})

等等。但是这样的事情并没有奏效。有人对如何解决这个问题有任何建议吗?

提前致谢。

4

1 回答 1

4

让我们看看 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();

而且,这是一个示例性输出:

示例输出

于 2019-04-09T09:25:50.810 回答