フィルターのクリア

plot a line of different colors on a map with patch (m_patch m_map)

10 ビュー (過去 30 日間)
Jose Luis Abella-Gutierrez
Jose Luis Abella-Gutierrez 2022 年 2 月 17 日
回答済み: Sachin Lodhi 2023 年 11 月 10 日
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)

回答 (1 件)

Sachin Lodhi
Sachin Lodhi 2023 年 11 月 10 日
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

カテゴリ

Help Center および File ExchangePolygons についてさらに検索

タグ

製品


リリース

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by