正如标题所述,当默认解释器设置为“乳胶”时,表面图中的颜色条不会出现。这发生在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?
答案 0 :(得分:1)
这种行为在Matlab R2014b中消失了,它使用了全新的图形引擎hg2。这些情节看起来不同(大部分时间都是以更好的方式),但是现在有了新的,未记录的错误,而不是旧的,未记录的错误......
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有关每个渲染器的优缺点的一些信息。