在Matlab中添加图例

时间:2014-11-12 10:43:05

标签: matlab

我试图在Matlab中为图表添加图例。

每种颜色应该有不同的图例,即红色' r'应该说上调,蓝色' b'下调和绿色'未经调节的。

我已经尝试在设置颜色后直接输入代码,但这样做效果不佳。

有什么想法吗?

function functionForNumber5(M)

fig = figure;
ax = axes('nextplot','add','xlim',[1,5],'ylim',[0,2],'xtick',           
[1:.5:5],'ytick',[0:.5:2]);
xlabel('Time (Hours)');
ylabel('Expression Level');
     for it1 = 1 : 24
     if M(5,it1) > 1.3
        currentColor = 'r';
     elseif M(5,it1) < 0.7
        currentColor = 'b';
     else
        currentColor = 'g';
     end
     plot(ax,[1:5],M(:,it1),'color',currentColor);
end

我真的需要一个颜色键来表示我的情节是上调,下调还是非调节,即仅图例上的3个键。

2 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,您的图表上有24行,这是三种颜色之一,并且您希望图例仅显示具有相应文本的3种颜色。这是一个解决方案,我认为应该有效:

function functionForNumber5(M)

fig = figure;
ax = axes('nextplot','add','xlim',[1,5],'ylim',[0,2],'xtick',[1:.5:5],'ytick',[0:.5:2]);
xlabel('Time (Hours)');
ylabel('Expression Level');
h_plot = zeros(1,24); % vector of plot handles
col_idx = zeros(1,3); % vector of indices corresponding to the 3 colours
for it1 = 1 : 24
     if M(5,it1) > 1.3
        currentColor = 'r';
        col_idx(1) = it1;
     elseif M(5,it1) < 0.7
        currentColor = 'b';
        col_idx(2) = it1;
     else
        currentColor = 'g';
        col_idx(3) = it1;
     end
     h_plot(it1) = plot(ax,[1:5],M(:,it1),'color',currentColor);
end
legend(h_plot(col_idx),'upregulated','downregulated','unregulated')

请注意,代码假定每种颜色至少有一个图,否则会出错,因为col_idx的对应值为0,并且用于索引{{1}它不起作用。

答案 1 :(得分:0)

matlab中有一个传奇功能。

x = -pi:pi/20:pi;
y1 = sin(x);
y2 = cos(x);

figure
plot(x,y1,'-ro',x,y2,'-.b')
legend('sin(x)','cos(x)')

这将创建一个图例,其中2个为y1而另一个为y2。

参考: http://es.mathworks.com/help/matlab/ref/legend.html#