Matlab图中的colormap/datatip问题

9

我运行了这段代码

A = uint8( ones( 200 ) );
a = [ A * 0 A * 1; ...
      A * 2 A * 3 ];

color_map = [ 0    0    0; ...
              0.3  0.3  0.3; ...
              0.9  0.3  0.1; ...
              1    1    1; ...
              zeros( 252, 3 ) ];

h = image( a );
colormap( color_map );

然后,我使用数据提示功能在图形中选择一个点。这会导致图中的颜色发生变化。它们仍然具有相同的索引和RGB值,但是它们的颜色不同。然后,我删除数据提示,颜色回归到正确的颜色。

使用:

set(gcf, 'Renderer', 'opengl')

弥补问题是可以的,但我想知道是否有办法避免这样做? 我正在使用MATLAB R2013b。


这有点奇怪。可能没有什么帮助,但我发现如果你在不加末尾的零来定义color_map时,在使用datatip时颜色不会改变。 color_map2 = [0 0 0;.3 .3 .3;.9 .3 .1;1 1 1]; h = image(a);colormap(color_map2); - Jim Quirk
这是一些有趣的行为。感谢您的关注! - David
2
就此而言,当我尝试您的代码时,2015a版本没有颜色变化。Mathworks在2014b中更新了图形系统。因此,一个答案可能是更新Matlab。 - Matt
@Matt 或者使用 feature('usehg2',1) 强制旧版本使用新的图形引擎,或者按照 这篇UndocumentedMatlab文章中所述的方法,在命令行选项中使用 -hgVersion 2 来运行MATLAB。 - Dev-iL
看起来 datatip 在 R2017a 版本已经过时了。我尝试搜索相关文档和问题,但它们都很老旧。即使使用 doc datatip 命令也会出现一个窗口显示 datatip 已经过时。供您参考。 - Numbers682
1个回答

1

这行代码可以防止您上述提到的行为:

set(0, 'DefaultFigureRenderer', 'opengl');

它为所有新的图形设置渲染器。您可以将该行放置在startup.m文件中。
要了解有关启动文件的更多信息,请转到:

http://www.mathworks.com/help/matlab/ref/startup.html

如果该文件不存在,您基本上需要生成它,并在其中放置您想要在Matlab启动时运行的代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接