How do I add a legend to a pcolorm map plot?
39 ビュー (過去 30 日間)
古いコメントを表示
Hi, I have draped a 2 dimensional plot over a map using pcolormap:
axesm('mapprojection','miller','maplatlimit',[latMin latMax],...
'maplonlimit',[longMin-5 longMax+5],'grid','on','MeridianLabel','on',...
'ParallelLabel','on','PLineLocation',4,'MlineLocation',8,'LabelUnits','degrees','MLabelLocation',8,...
'LabelFormat','compass','FLatLimit',[40 86]);
geoshow('landareas.shp', 'FaceColor', [1 1 1])
geoshow('worldlakes.shp', 'FaceColor', 'cyan')
[ h] = pcolorm(lat,long,data_rate);
legends = {'50 Mbps','20 Mbps'};
legend(h, legends);
The 2-D array consists of only 2 values. However, the legend command only generated one entry in the legend table. Why doesn't it show the second values. I've attached the
0 件のコメント
回答 (2 件)
Keihan
2018 年 6 月 8 日
1 件のコメント
Chad Greene
2018 年 6 月 9 日
Oh! So data_rate is a matrix with only two values, you're using pcolorm to plot those two values, and you want the legend to show the two values and their corresponding colors?
Typically I wouldn't use a legend to show the values in a pcolorm map, because I'm usually working with a continuum of values, so colorbar is more appropriate than legend.
I don't know of an elegant solution for what you're trying to do. There are many ways to do it, but they all involve a lot of steps. Using colorbar you could do something like this:
% Here's some sample data:
z = peaks;
z(z>0) = 70;
z(z<=0) = 50;
% plot the data:
pcolor(z)
shading flat
cb = colorbar;
%ylabel(cb,'data rate')
caxis([40 80])
cb.Ticks = [50 70];
cb.TickLabels = {'50 Mbps','70 Mbps'};
colormap(parula(2))

The example above uses pcolor on a cartesian plot instead of pcolorm on a map, but the principles are the same.
Chad Greene
2018 年 5 月 30 日
When you call
legend(h, legends);
the h refers only to the handle of the pcolorm object, so h is the only item that will appear in the legend.