How do I add a legend to a pcolorm map plot?
조회 수: 25 (최근 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.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Geographic Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!