以八度为单位的默认图例字体大小
Posted
技术标签:
【中文标题】以八度为单位的默认图例字体大小【英文标题】:Default legend font size in octave 【发布时间】:2021-03-10 07:37:19 【问题描述】:我的意思是在我的 Octave 脚本中设置默认的图例字体大小(以及其他属性)。
两个set
(分别激活)
legend_fontsize = 14;
set(0, "defaultlegendlocation", "northoutside");
set(0, "defaultlegendfontsize", legend_fontsize);
产生error: invalid default property specification
。
正确的语法是什么?
在 Matlab 中,this 建议它不应该抛出任何错误,它应该可以工作。
【问题讨论】:
【参考方案1】:理论上你是对的,因为according to the manual, octave supports the same syntax,对于所有类型的图形对象“类型”,这也应该在八度音阶中工作。
然而,legend 是一个特例,因为它没有实现为自己的八度图形对象“类型”;相反,如文档中所述:
A legend is implemented as an additional axes object with the 'tag'
property set to "legend". Properties of the legend object may be
manipulated directly by using 'set'.
因此,这意味着defaultlegendfontsize
策略将不起作用。
这也意味着,由于原则上“图例”对象是伪装的“轴”对象,set( 0, 'defaultaxesfontsize', 30 )
将起作用……但显然会产生影响所有轴对象的意外后果。
如果您愿意,可以在 octave 错误跟踪器中指出这一点。
与此同时,您始终可以在 .octaverc 中执行以下操作作为解决方法:
function h = legend( varargin )
% Wrapper to builtin legend function, also setting font to default size of 30
h = builtin( 'legend', varargin: )
set( h, 'fontsize', 30 )
endfunction
这有效地用自定义命令隐藏了内置的“legend”命令,该命令在返回句柄之前应用“默认”值作为额外步骤。
PS:话虽如此,在代码传播和重用的情况下,需要小心设置此类默认值,假设此类默认值已在所有环境中预设。
这是 R 用户常见的注意点,例如,不要创建复杂的 .Rprofile
文件。
PS 2:或者,当您有很多默认值要应用时,一个不错的方法是创建一个函数applydefaults( handle )
,它一次性应用您的所有偏好,并在您的任何对象的末尾调用它想把这些应用到。这是我以前在论文中所做的。听起来可能需要付出更多的努力,但是当您 100% 清楚发生了什么以及格式更改来自何处时,您最终会感谢自己 1 个月!
【讨论】:
很好的说明。我实际上经常按照您的建议设置“格式化功能”。我会试试这个并发布反馈。以上是关于以八度为单位的默认图例字体大小的主要内容,如果未能解决你的问题,请参考以下文章
带有 rem 的响应式排版 - 以 % 或 px 为单位的基线字体大小?