颜色条未出现在(表面)图中 - LaTeX 解释器问题

Colorbar not appearing in (surface) plot - LaTeX interpreter issue

如标题所述,当默认解释器设置为 'latex' 时,曲面图中的颜色条不会出现。这发生在 MATLAB 2012b 和 2013a 以及两台不同的机器上。

准确地说,创建了颜色条object,编辑绘图时可以单击,可以使用交互式颜色条编辑器进行编辑,但根本不可见。 另存为图形重新打开、另存为PNG、导出为.eps格式或另存为.pdf时不出现。

四处搜索后,我发现了以下 post 2011 年关于 MATLAB 7 的内容: http://mathforum.org/kb/message.jspa?messageID=7518470

具体来说,解释器似乎有问题,当它设置为'latex'时,颜色条将不会显示。当设置为默认值时,它会。

这是最小的演示示例。

set(0,'defaulttextinterpreter','none');
figure;
surf(peaks(100)); colorbar
set(0,'defaulttextinterpreter','latex');
figure
surf(peaks(100)); colorbar

除了颜色栏仅在第一张图中可见外,这两张图完全相同。

我在情节中使用了很多特殊字符和 sub/superscripts,所以在 startup.m 中我将默认解释器设置为 'latex'。我可以将所有对 colorbar 的调用包围起来:

 set(0,'defaulttextinterpreter','none');    
 colorbar;
 set(0,'defaulttextinterpreter','latex');

但这可能是最不优雅的解决方案。任何人都可以阐明这个似乎存在超过 5 年和多个版本的 MATLAB 的问题吗?

这种行为在 Matlab R2014b 中消失了,它使用全新的图形引擎 hg2。这些图看起来不同(大部分时间以更好的方式),但现在有新的、未记录的错误,而不是旧的、记录的错误...

早期版本的 Matlab support somewhat experimental stages 的 hg2。您可以通过 运行 Matlab 使用开关“-hgVersion 2”启用这些。例如,您可以通过将桌面快捷方式编辑为指向 "C:\Program Files\MATLAB\R2013b\bin\matlab.exe" -hgVersion 2.

之类的内容来执行此操作

不幸的是,由于新的图形引擎是 Matlab2014b 中的默认引擎,旧的错误在未来不太可能得到修复。我希望我能以更好的方式帮助你,但你发布的解决方法似乎是一个很好的解决方案,特别是如果你将它包装在一个名为 robust_colorbar 左右的函数中。

我可以在我的系统(R2010b,Windows Vista 32 位)上重现该问题。似乎可以通过 将图 'Renderer' 属性 从默认的 'OpenGL' 更改为 'painters' 或 [=15] 来解决=].因此,您可以在创建图形时更改渲染器 :

set(0, 'defaulttextinterpreter', 'latex');
figure('Renderer', 'zbuffer') %// this line changed
surf(peaks(100)); colorbar

或更改默认渲染器以用于所有图形(因此您不需要在每个图形中都更改它):

set(0, 'DefaultFigureRenderer', 'zbuffer'); %// this line added
set(0, 'defaulttextinterpreter', 'latex');
figure
surf(peaks(100)); colorbar

使用 'OpenGL' 以外的渲染器可能会影响透明度或绘图速度等功能。 Here 关于每个渲染器优缺点的一些信息。