颜色条未出现在(表面)图中 - 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 关于每个渲染器优缺点的一些信息。
如标题所述,当默认解释器设置为 '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 关于每个渲染器优缺点的一些信息。