Colorbar没有出现在(表面)图中 - LaTeX解释器问题

时间:2015-03-03 05:15:53

标签: matlab plot colorbar

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

确切地说,创建了colorbar对象,可以在编辑绘图时单击,可以使用交互式颜色条编辑器进行编辑但根本不可见。 保存为图形并重新打开,保存为PNG,以.eps格式导出​​或保存为.pdf时不会显示。

在搜索之后,我发现了2011年关于MATLAB 7的以下帖子: http://mathforum.org/kb/message.jspa?messageID=7518470

具体来说,解释器似乎有问题,当设置为“乳胶”时,颜色栏将不会显示。当设置为默认值时,它会。

这是最小的演示示例。

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

这两个数字是相同的,只是颜色条只在第一个图中可见。

我在我的图中使用了很多特殊字符和子/上标,所以在startup.m中我将默认解释器设置为' latex'。我可以用以下方式包围所有对colorbar的调用:

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

但这可能是最不优雅的解决方案。任何人都可以对这个问题有所了解,这个问题似乎已存在超过5年,并且有多个版本的MATLAB?

2 个答案:

答案 0 :(得分:1)

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

hg2_colorbar_example

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

之类的内容来执行此操作

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

答案 1 :(得分:0)

我可以在我的系统上重现问题(R2010b,Windows Vista 32位)。似乎可以通过将图中的'Renderer'属性从默认'OpenGL'更改为'painters''zbuffer'来解决。因此,您可以在创建数字时更改渲染器

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有关每个渲染器的优缺点的一些信息。