R2014b中的Matlab Contour Plot Legend与以前的版本不同

时间:2015-02-06 20:34:38

标签: matlab legend contour

我有一个像这样的matlab脚本:

x = linspace(-2*pi,2*pi);
y = linspace(0,4*pi);
[X,Y] = meshgrid(x,y);
Z = sin(X)+cos(Y);
Z1 = cos(.5*X) + sin(2*Y);

figure
[c h] = contour(X,Y,Z, '-r')  
hold on
[c1 h2] = contour(X,Y,Z1, '-b')
legend('test1', 'test2')

我在同一个图上有两个等高线图,一个用红色显示,另一个用蓝色显示。问题是图例不会以红色和蓝色显示。在旧版本的matlab中,这个工作得很好,但你应该如何定义R2014b中的图例,以便在测试1'旁边有红色轮廓。 '测试2'?

旁边的蓝色和蓝色轮廓

其他人在数学中有一个非常相似的问题,但没有得到答案:http://www.mathworks.com/matlabcentral/answers/164210-how-does-the-contour-plot-with-r2014b-work

谢谢!

1 个答案:

答案 0 :(得分:1)

根据文档,在R2014b&#34中; Colorbar和图例具有新属性,并且不支持某些轴属性"。由于contour返回的句柄现在是 Contour 对象,因此您无能为力。

尽管如此,为了获得理想的行为,你还有这个非常丑陋的黑客行为:

x = linspace(-2*pi,2*pi);
y = linspace(0,4*pi);
[X,Y] = meshgrid(x,y);
Z = sin(X)+cos(Y);
Z1 = cos(.5*X) + sin(2*Y);

figure
hold on

[~, h1] = contour(X,Y,Z, '-r');
h1_ = plot(NaN, '-r');
[~, h2] = contour(X,Y,Z1, '-b');
h2_ = plot(NaN, '-b');

L = legend([h1_ h2_], 'test 1', 'test 2');