Matlab 在地图上标注点
Posted
技术标签:
【中文标题】Matlab 在地图上标注点【英文标题】:Matlab Label Points on Map 【发布时间】:2016-03-29 05:07:32 【问题描述】:我的 Matlab 代码如下所示,根据我的输入文件和变量“prod”,我得到了一个漂亮的彩色点图,该变量是一个 10 x 1 变量,但对于本例来说可能是 prod = rand(10,1)
。 “lat”和“lont”是纬度和经度值。我正在尝试绘制一个图例,显示所有 10 个条目以及包含所有 10 个条目的文本文件。使用下面显示的代码,我得到了一个图例,它为我提供了 10 个条目中的 1 个,在地图上具有相应的颜色点,但带有关于忽略“额外”图例条目的警告。我在文档和互联网上搜索了使用 scatterm
和大图例(我的实际数据是 >100 点)进行绘图的示例,但找不到任何有效的方法。提前感谢您的帮助!
prod = xlsread('J:\out.rms.err.xlsx', 'sheet1','C2:E182'); %open file
disp('finished reading input file');
[txt txt ] = xlsread('J:\out.rms.err.xlsx'); %
text = txt(2:end,1); %farms only
%figure; ax = worldmap('Spain');
lat = prod(:,2);
lon = prod(:,3);
%xy = [ lat lon ];
colormap('hot');
ax = figure(1);
%ax = worldmap([40 45 ], [-11 5]); %Northern Spain
%ax = worldmap([35 40 ], [-11 5]); %Southern Spain
ax = worldmap([35 45 ], [-12 5] );
set(ax,'visible','off','units','normalized','outerposition',[0 0 1 1]);
land = shaperead('landareas.shp','UseGeoCoords',true);
geoshow(ax,land,'FaceColor', [0.15 0.5 0.15]);
colormap('hsv');
colorbar;
hold on;
hh = num2str(prod(:,1));
h(1) = scatterm(ax,lat,lon,20,prod(:,1),'filled');
legend(h,text,1);
【问题讨论】:
【参考方案1】:scatterm
生成一个属于散点系列的图。对于这种类型的图表,只能使用一个符号(一个标记),默认类型是圆形 ('o'
)。图例对应于这个独特的符号。
但是,您可以通过 (i) 叠加多个图表 每个只有一个点,或 (ii) 创建您自己的图例 使用 patch
来绕过此限制示例(因此图例与数据断开连接 - 仅用作最终图形说明)
【讨论】:
以上是关于Matlab 在地图上标注点的主要内容,如果未能解决你的问题,请参考以下文章