首页 > 解决方案 > 连接散点图

问题描述

我已经非常放大了使用以下代码创建的地图(任何带有 lat 的东西都是纬度,任何带有 long 的东西都是经度)。

latuu=[latu1,latu2,latu3,latu4];
latvv=[latv1,latv2,latv3,latv4];
latff=[latf1,latf2,latf3,latf4];
lattt=[latt1,latt2,latt3,latt4];
lonuu=[lonu1,lonu2,lonu3,lonu4];
lonvv=[lonv1,lonv2,lonv3,lonv4];
lonff=[lonf1,lonf2,lonf3,lonf4];
lontt=[lont1,lont2,lont3,lont4];
%% Make map of the Moorings and add the points extracted by GridPointsSuper
disp=0.01;

worldmap world
load coastlines
[latcells, loncells] = polysplit(coastlat, coastlon);
plotm(coastlat, coastlon)
h = worldmap([min(latall)-disp max(latall)+disp],[min(lonall)-disp max(lonall)+disp]);%'Europe',
getm(h,'MapProjection')
geoshow('landareas.shp', 'FaceColor', [0.15 0.5 0.15])
geoshow('worldrivers.shp', 'Color', 'cyan')
hold on 
P=scatterm(PlanierCoor(1),PlanierCoor(2),'red')
textm(PlanierCoor(1),PlanierCoor(2),"Planier")
hold on
u=scatterm(latuu,lonuu,'x','b')

hold on
v=scatterm(latvv,lonvv,'x','g')

hold on
f=scatterm(latff,lonff,'x','k')

hold on
t=scatterm(lattt,lontt,'x','c')


legend([P,u,v,f,t],{'buoy','u','v','f','t'})

它成功创建了以下地图:在此处输入图像描述

我想连接青色十字,使其形成一个正方形,但是当我这样做时

  hold on
    t=scatterm(lattt,lontt,'-x','c')

它给出了错误

Error using scatter (line 130)
There is no LineStyle property on the Scatter class.

Error in internal.mapgraph.GeoScatterGroup (line 44)
            gTemp = scatter(lon, lat, varargin{:});

Error in scatterm (line 62)
mapgraph = internal.mapgraph.GeoScatterGroup(ax, lat, lon, args{:});

Error in ExtractMooringsPlanier (line 122)
t=scatterm(lattt,lontt,'-x','c')

有没有办法连接这张地图上的十字架?如果有怎么办?

标签: matlabscatter

解决方案


我还没有找到在 scatterm 中执行此操作的方法,但是如果您将第一个 x 绘制两次,它可以与 plotm 一起使用。

latuu=[latu1,latu2,latu3,latu4];
latvv=[latv1,latv2,latv3,latv4];
latff=[latf1,latf2,latf3,latf4];
lattt=[latt1,latt2,latt4,latt3,latt1];% plot first point twice
lonuu=[lonu1,lonu2,lonu3,lonu4];
lonvv=[lonv1,lonv2,lonv3,lonv4];
lonff=[lonf1,lonf2,lonf3,lonf4];
lontt=[lont1,lont2,lont4,lont3,lont1];%

disp=0.01;
figure
worldmap world
load coastlines
[latcells, loncells] = polysplit(coastlat, coastlon);
plotm(coastlat, coastlon)
h = worldmap([min(latall)-disp max(latall)+disp],[min(lonall)-disp max(lonall)+disp]);%'Europe',
getm(h,'MapProjection')
geoshow('landareas.shp', 'FaceColor', [0.15 0.5 0.15])
geoshow('worldrivers.shp', 'Color', 'cyan')
hold on 
P=scatterm(PlanierCoor(1),PlanierCoor(2),'red')
textm(PlanierCoor(1),PlanierCoor(2),"Planier")
hold on
u=scatterm(latuu,lonuu,'x','b')

hold on
v=scatterm(latvv,lonvv,'x','g')

hold on
f=scatterm(latff,lonff,'x','k')

hold on
t=scatterm(lattt,lontt,'x','grey')

hold on
plotm(lattt,lontt,'k')

legend([P,u,v,f,t],{'buoy','u','v','f','t'})

您必须确保绘制点的顺序正确,否则线条会交叉。 在此处输入图像描述


推荐阅读