如何解决获取 Octave 中的绘图标记和线型列表
有没有办法以编程方式获取可用于在 Octave 中绘图的标记和线型列表?
理想情况下,我会做类似的事情
mslist = whatever_function_for_marker_styles;
lslist = whatever_function_for_line_styles;
for i = 1:np
plot(x,y(i,:),'marker',mslist(i),'linestyle',lslist(i))
endfor
注意事项:
解决方法
最简单的方法是从手册中获取符号并将它们放入元胞数组中:
mslist = {'+','o','*','.','x','s','d','^','v','>','<','p','h'};
lslist = {'-','--',':','-.'};
您可以使用标准的 for 循环遍历它们,并使用大括号通过索引访问它们,例如lslist{i}。符号在手册 (https://octave.org/doc/v6.1.0/Two_002dDimensional-Plots.html#Two_002dDimensional-Plots) 的第 15.2.1 节中。普通向量适用于 mslist 而不是元胞数组,因为所有符号都是单个字符,但不适用于 lslist,其中一些字符长为两个字符。
,我同意 Howard 的观点,即“完全”以编程方式执行此操作可能有点矫枉过正。
但是,如果您确实想要这样做,我敢打赌会解析“plot”命令的“help”输出,该命令保证提及这些要点,并且具有合理的保证即使将来添加更多标记等,它也将保持相同的格式。
我不会解析整个事情,但如果你这样做,你可能会这样开始:
plotdoc = help('plot');
[plotdoc_head,plotdoc_rest] = deal( strsplit( plotdoc,' linestyle' ){:} );
[plotdoc_lines,plotdoc_rest] = deal( strsplit( plotdoc_rest,' marker' ){:} );
[plotdoc_markers,' color' ){:} );
[plotdoc_colors,'";displayname;"' ){:} );
或类似的东西,然后创造性地使用正则表达式或 strfind / strtoken / strplit 来获取每个类别中必要的标记。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。