plot a line of different colors on a map with patch (m_patch m_map)
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi
I am trying to draw a line with different colors in a map. I succed making it in a non-map figure following this answer (https://www.mathworks.com/matlabcentral/answers/21382-plot-different-color), but when I try to include it in a map using the m_map package it doesn't work (neither after a simple pcolor figure with ETOPO). There is no error warning in the command window. No matters if I use m_patch or patch. I tried on Windowns and with Linux based computers.
Here is my code:
xlon=210:1:260;
y=rand(51,1);
ylat=sin(30)*y+45; ylat=ylat';
z=rand(51,1); z=z';
%
figure(1)
patch([xlon nan],[ylat nan],[z nan],[z nan], 'edgecolor', 'interp');
colorbar;colormap(jet);
%%
regionlatlon=[30, 60, 210,250]; % limites lat lon para mapa
lon=210:2:260;
lat=30:2:60;
%
figure (2)
m_proj('Miller','lat',regionlatlon(1:2),'lon',regionlatlon(3:4));%
m_grid; hold on;
[lon,lat] = meshgrid(lon,lat);
m_coast('color', [.1 .1 .1]);
m_patch([xlon nan],[ylat nan],[z nan],[z nan], 'edgecolor', 'interp');
colorbar; colormap(jet)
0 commentaires
Réponses (1)
Sachin Lodhi
le 10 Nov 2023
Hi Jose,
Based on my understanding, it seems that you want to plot a line of different colors on a map with ‘m_patch’ function.
The ‘m_patch’ function in the ‘m_map’ package does not support the ‘edgecolor’ property with ‘interp’ value. It is designed to fill polygons in map coordinates, and does not support the same set of properties as the built-in ‘patch’ function.
If you want to draw a line with different colors on a map, you can use the ‘m_line’ function with the ‘Color’ property set to a colormap. However, this will color the entire line with the same color.
One workaround is to break the line into small segments, and draw each segment with a different color. Here is an example:
% Draw line in segments, each with a different color
for i = 1:length(xlon)-1
m_line([xlon(i) xlon(i+1)], [ylat(i) ylat(i+1)], 'Color', cmap(z_norm(i),:), 'LineWidth', 2);
end
I hope this helps.
Best Regards,
Sachin
0 commentaires
Voir également
Catégories
En savoir plus sur Polygons dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!