Setting geoplot longitude limits manually - changing aspect ratio
조회 수: 51 (최근 30일)
이전 댓글 표시
Hi all!
I have a question about using geoplots. Is there a way of changing the aspect ratio and stretching it out?
My plot works great, but the longitude that automatically is used for the x axis is way too large of a range - my actual data is right in the center. I would love to be able to zoom in to a specific longitude range, so that the details of my data could be clearer. I've tried using geolimits, which I saw from another post on this topic, as well as using the function myresizefcn from another post, but neither of them seemed to work. Please help!
Here is my code:
datetime = rates(:,1);
Latitude = rates(:,2);
Longitude = rates(:,3);
rates = rates(:,4);
gx = geoaxes;
geolimits([52.9569 80.0627], [0, 45]); %this doesn't seem to work!!
geoplot(gx, Latitude, Longitude,'LineWidth', 4, 'color', 'k');
gx.LatitudeAxis.FontSize = 12;
gx.LatitudeAxis.Label.FontSize = 20;
gx.LatitudeAxis.Label.FontWeight = 'bold';
gx.LatitudeAxis.TickValues = [45 50 55 60 65 66.5 70 75 80];
gx.LatitudeAxis.TickLabels = {'45°N', '50°N', '55°N', '60°N', '65°N', 'Arctic Circle', '70°N', '75°N', '80°N'};
gx.LatitudeAxis.FontWeight = 'bold';
gx.LongitudeAxis.FontSize = 12;
gx.LongitudeAxis.Label.FontSize = 20;
gx.LongitudeAxis.Label.FontWeight = 'bold';
gx.LongitudeAxis.FontWeight = 'bold';
gx.LineWidth = .5;
gx.GridColor = 'k';
gx.GridAlpha = .5;
figure(1)
hold on
geobasemap('satellite')
colormap parula
c = colorbar;
c.FontSize = 12;
c.FontWeight = 'bold';
geoscatter(Latitude,Longitude, 25, rates, 'filled');
c.Label.String = 'data units)';
c.Label.FontWeight = 'bold';
c.Label.FontSize = 20;
c.Label.Rotation = 270;
c.Label.Position = [4.5 50 0];
o = 1;
And I've attached my dataset! (when you download it it might show up as rates1, sorry about that!)
Here is the figure I get:
My longitude data range is in between 0 and like 45 degrees, and that's what I'd like it to be set to so the area inbetween that is stretched out and you can see the details more clearly.
Thank you all in advance!
댓글 수: 0
채택된 답변
Kojiro Saito
2024년 4월 11일
geolimits document says,
Note
The geolimits function typically uses wider limits than the limits you specify to maintain the aspect ratio of the map.
The upper and lower limit would be changed for adjusting aspect ratio of map.
So, you need to specify Position of figure so that the map becomes a vertical rectangle.
matStr = load('rates.mat');
rates = matStr.rates1;
datetime = rates(:,1);
Latitude = rates(:,2);
Longitude = rates(:,3);
rates = rates(:,4);
figure("Position", [100 200 650 800]) % Added
gx = geoaxes;
geolimits([52.9569 80.0627], [0 45]);
geoplot(gx, Latitude, Longitude,'LineWidth', 4, 'color', 'k');
gx.LatitudeAxis.FontSize = 12;
gx.LatitudeAxis.Label.FontSize = 20;
gx.LatitudeAxis.Label.FontWeight = 'bold';
gx.LatitudeAxis.TickValues = [45 50 55 60 65 66.5 70 75 80];
gx.LatitudeAxis.TickLabels = {'45°N', '50°N', '55°N', '60°N', '65°N', 'Arctic Circle', '70°N', '75°N', '80°N'};
gx.LatitudeAxis.FontWeight = 'bold';
gx.LongitudeAxis.FontSize = 12;
gx.LongitudeAxis.Label.FontSize = 20;
gx.LongitudeAxis.Label.FontWeight = 'bold';
gx.LongitudeAxis.FontWeight = 'bold';
gx.LineWidth = .5;
gx.GridColor = 'k';
gx.GridAlpha = .5;
figure(1)
hold on
geobasemap('satellite')
colormap parula
c = colorbar;
c.FontSize = 12;
c.FontWeight = 'bold';
geoscatter(Latitude,Longitude, 25, rates, 'filled');
c.Label.String = 'data units)';
c.Label.FontWeight = 'bold';
c.Label.FontSize = 20;
c.Label.Rotation = 270;
c.Label.Position = [4.5 50 0];
hold off
o = 1;
댓글 수: 0
추가 답변 (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!