Matlab:在极坐标图中标记数据点

时间:2015-02-15 20:38:51

标签: matlab labels polar-coordinates

我有一个有趣的问题要问,我已经彻底搜查过,令我沮丧的是,似乎没有遇到过这方面的麻烦。我想在Matlab中标记极坐标图中的所有数据点。到目前为止,代码非常简单,如下:

close all
clear all

% Load all the datasets
%load('matlab.mat')

% These lines serve the same purpose as the load('matlab.mat')
PSA=[5.45938528888889;3.13809934444444;5.42622406111111;2.48185610000000];
NSA=[5.32150439444444;0.767944222222222;5.32499505000000;0.420623994444444];
PST=[1.69085714290000;2.68685714290000;0.688857142900000;0.688857142900000];
NST=[2.32914285710000;1.30914285710000;1.30914285710000;0.709142857100000];

% Global Constants
PI=3.14159;

% Converts the data points (in degrees originally) into radians
PSA=PSA.*(PI/180);
NSA=NSA.*(PI/180);

% Scaling, assumed that within the polar plot function that the maximum
% value is 1.0, so I scaled the data set to be fractions of 1 as opposed to
% values of 3
PST_1=PST./3;

figure(1)
polar(PSA,PST,'.');
h=text(PST(1,1), 2, ' \leftarrow foo');
% text(PositiveStationAzimuth(2,1), PositiveStationTime(2,1), ... PositiveStationName(2,1));
% text(PositiveStationAzimuth(3,1), PositiveStationTime(3,1), ... PositiveStationName(3,1));
% text(PositiveStationAzimuth(4,1), PositiveStationTime(4,1), ... PositiveStationName(4,1));
hold on;
polar(NSA,NST,'x');
view([90 270]);

你将不得不原谅我对这件事情的一般不良编码,这实际上是朋友的代码片段,他向我求助,我试了一两个小时,他放弃但我会喜欢找到答案。

所以我正在寻找的解决方案是一些命令,它允许我在极坐标系中绘制由我的数据点定义的位置数组指定的字符串数组。就目前而言,我甚至不确定文本(x,y,'字符串')如何在极坐标平面中起作用。我认为它是为欧几里德坐标系而不是极地坐标而建。我想知道是否有任何捷径没有硬编码文本出现在数据的同一区域。

1 个答案:

答案 0 :(得分:1)

polar函数本身可以完成转换坐标的所有工作。因此,直接从图中提取值:

h = polar(PSA,PST,'.'); % easiest way to get handle to plot
x = get(h,'XData');
y = get(h,'YData');
text(x,y, ' \leftarrow foo');  % puts same text next to every point
text(x(3),y(3),' \leftarrow three'); % puts text next to specific point

如果您有一个列表(例如字符串的单元格数组)放在单个点旁边,您可以使用循环,如下所示:

text(x(n),y(n), [' \leftarrow ', stationname{n}]);