我试图在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个键。
答案 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。