2016-12-02 92 views
4

我使用倍频4.0使用的是Linux,它类似于Matlab的改变范围/八度/ MATLAB极性图表上的限制

是否有可能有一个极坐标图上不同的号码范围,让他们也随着学位出现?

正常的极坐标图从0-359度变为shown in black in image,我希望范围和刻度值从0到100 shown in red in the image这是可能的吗?如果是这样,两个范围可以同时在极坐标图上显示(0-359和0-100),就像在同一图上使用plotyy绘制2 y轴一样?下面极坐标图 Polar plot with two ranges of numbers

这里的

见图片是在数字0-359并有相应的编号0-100匹配起来。

0 0 
1 0.27855 
2 0.5571 
3 0.83565 
4 1.11421 
5 1.39276 
6 1.67131 
7 1.94986 
8 2.22841 
9 2.50696 
10 2.78552 
11 3.06407 
12 3.34262 
13 3.62117 
14 3.89972 
15 4.17827 
16 4.45682 
17 4.73538 
18 5.01393 
19 5.29248 
20 5.57103 
21 5.84958 
22 6.12813 
23 6.40669 
24 6.68524 
25 6.96379 
26 7.24234 
27 7.52089 
28 7.79944 
29 8.07799 
30 8.35655 
31 8.6351 
32 8.91365 
33 9.1922 
34 9.47075 
35 9.7493 
36 10.0279 
37 10.3064 
38 10.585 
39 10.8635 
40 11.1421 
41 11.4206 
42 11.6992 
43 11.9777 
44 12.2563 
45 12.5348 
46 12.8134 
47 13.0919 
48 13.3705 
49 13.649 
50 13.9276 
51 14.2061 
52 14.4847 
53 14.7632 
54 15.0418 
55 15.3203 
56 15.5989 
57 15.8774 
58 16.156 
59 16.4345 
60 16.7131 
61 16.9916 
62 17.2702 
63 17.5487 
64 17.8273 
65 18.1058 
66 18.3844 
67 18.663 
68 18.9415 
69 19.2201 
70 19.4986 
71 19.7772 
72 20.0557 
73 20.3343 
74 20.6128 
75 20.8914 
76 21.1699 
77 21.4485 
78 21.727 
79 22.0056 
80 22.2841 
81 22.5627 
82 22.8412 
83 23.1198 
84 23.3983 
85 23.6769 
86 23.9554 
87 24.234 
88 24.5125 
89 24.7911 
90 25.0696 
91 25.3482 
92 25.6267 
93 25.9053 
94 26.1838 
95 26.4624 
96 26.7409 
97 27.0195 
98 27.2981 
99 27.5766 
100 27.8552 
101 28.1337 
102 28.4123 
103 28.6908 
104 28.9694 
105 29.2479 
106 29.5265 
107 29.805 
108 30.0836 
109 30.3621 
110 30.6407 
111 30.9192 
112 31.1978 
113 31.4763 
114 31.7549 
115 32.0334 
116 32.312 
117 32.5905 
118 32.8691 
119 33.1476 
120 33.4262 
121 33.7047 
122 33.9833 
123 34.2618 
124 34.5404 
125 34.8189 
126 35.0975 
127 35.376 
128 35.6546 
129 35.9331 
130 36.2117 
131 36.4903 
132 36.7688 
133 37.0474 
134 37.3259 
135 37.6045 
136 37.883 
137 38.1616 
138 38.4401 
139 38.7187 
140 38.9972 
141 39.2758 
142 39.5543 
143 39.8329 
144 40.1114 
145 40.39 
146 40.6685 
147 40.9471 
148 41.2256 
149 41.5042 
150 41.7827 
151 42.0613 
152 42.3398 
153 42.6184 
154 42.8969 
155 43.1755 
156 43.454 
157 43.7326 
158 44.0111 
159 44.2897 
160 44.5682 
161 44.8468 
162 45.1253 
163 45.4039 
164 45.6825 
165 45.961 
166 46.2396 
167 46.5181 
168 46.7967 
169 47.0752 
170 47.3538 
171 47.6323 
172 47.9109 
173 48.1894 
174 48.468 
175 48.7465 
176 49.0251 
177 49.3036 
178 49.5822 
179 49.8607 
180 50.1393 
181 50.4178 
182 50.6964 
183 50.9749 
184 51.2535 
185 51.532 
186 51.8106 
187 52.0891 
188 52.3677 
189 52.6462 
190 52.9248 
191 53.2033 
192 53.4819 
193 53.7604 
194 54.039 
195 54.3175 
196 54.5961 
197 54.8747 
198 55.1532 
199 55.4318 
200 55.7103 
201 55.9889 
202 56.2674 
203 56.546 
204 56.8245 
205 57.1031 
206 57.3816 
207 57.6602 
208 57.9387 
209 58.2173 
210 58.4958 
211 58.7744 
212 59.0529 
213 59.3315 
214 59.61 
215 59.8886 
216 60.1671 
217 60.4457 
218 60.7242 
219 61.0028 
220 61.2813 
221 61.5599 
222 61.8384 
223 62.117 
224 62.3955 
225 62.6741 
226 62.9526 
227 63.2312 
228 63.5097 
229 63.7883 
230 64.0669 
231 64.3454 
232 64.624 
233 64.9025 
234 65.1811 
235 65.4596 
236 65.7382 
237 66.0167 
238 66.2953 
239 66.5738 
240 66.8524 
241 67.1309 
242 67.4095 
243 67.688 
244 67.9666 
245 68.2451 
246 68.5237 
247 68.8022 
248 69.0808 
249 69.3593 
250 69.6379 
251 69.9164 
252 70.195 
253 70.4735 
254 70.7521 
255 71.0306 
256 71.3092 
257 71.5877 
258 71.8663 
259 72.1448 
260 72.4234 
261 72.7019 
262 72.9805 
263 73.2591 
264 73.5376 
265 73.8162 
266 74.0947 
267 74.3733 
268 74.6518 
269 74.9304 
270 75.2089 
271 75.4875 
272 75.766 
273 76.0446 
274 76.3231 
275 76.6017 
276 76.8802 
277 77.1588 
278 77.4373 
279 77.7159 
280 77.9944 
281 78.273 
282 78.5515 
283 78.8301 
284 79.1086 
285 79.3872 
286 79.6657 
287 79.9443 
288 80.2228 
289 80.5014 
290 80.7799 
291 81.0585 
292 81.337 
293 81.6156 
294 81.8942 
295 82.1727 
296 82.4513 
297 82.7298 
298 83.0084 
299 83.2869 
300 83.5655 
301 83.844 
302 84.1226 
303 84.4011 
304 84.6797 
305 84.9582 
306 85.2368 
307 85.5153 
308 85.7939 
309 86.0724 
310 86.351 
311 86.6295 
312 86.9081 
313 87.1866 
314 87.4652 
315 87.7437 
316 88.0223 
317 88.3008 
318 88.5794 
319 88.8579 
320 89.1365 
321 89.415 
322 89.6936 
323 89.9721 
324 90.2507 
325 90.5292 
326 90.8078 
327 91.0864 
328 91.3649 
329 91.6435 
330 91.922 
331 92.2006 
332 92.4791 
333 92.7577 
334 93.0362 
335 93.3148 
336 93.5933 
337 93.8719 
338 94.1504 
339 94.429 
340 94.7075 
341 94.9861 
342 95.2646 
343 95.5432 
344 95.8217 
345 96.1003 
346 96.3788 
347 96.6574 
348 96.9359 
349 97.2145 
350 97.493 
351 97.7716 
352 98.0501 
353 98.3287 
354 98.6072 
355 98.8858 
356 99.1643 
357 99.4429 
358 99.7214 
359 100 

这里是数字0-359的形象,并有相应的数字0-100匹配。 Numbers matching up

+0

@AnderBiguri我打算把它作为文本发布,但它会这么长,我应该如何发布它,以及所有这些数据的最佳方式是什么? –

+1

@AnderBiguri谢谢我将它粘贴到希望滚动的代码块中。 –

回答

4

在八度的polar剧情对象增加了rtickttick属性,它允许您更改刻度线的位置的父轴,但是,不幸的是没有tticklabel的性质,我们可以用它来轻松找到并修改theta刻度标记。

相反,我们可以通过首先将您的数据转换为0 - 2 * pi(如polar所预期)来绘制您希望theta范围为0-100的绘图。然后绘制两个后,我们就可以使用findall定位所有的文本对象,找出哪些是THETA蜱,创建它们的副本,并修改该组的一个似乎是 0 - 100

% Your first plot is going to use the 0 - 2pi range for theta 
theta1 = linspace(0, 2*pi, 1000); 
rho1 = sin(theta1 * 5); 
plot1 = polar(theta1, rho1); 

hold on 

% For your second plot, just transform your 0 - 100 range to be 0 - 360 instead 
theta2 = 0:100; 
rho2 = linspace(0, 1, numel(theta2)); 
modtheta2 = 2*pi * (theta2 ./ 100); 
plot2 = polar(modtheta2, rho2); 

% Now we need to modify all of the labels 

% Find all of the original labels 
labels = findall(gca, 'type', 'text'); 

% Figure out which ones are the radial labels. To do this we compute the distance 
% from the center of the plot and find the most common distance 
distances = cellfun(@(x)norm(x(1:2)), get(labels, 'Position')); 

% Figure out the most common 
[~, ~, b] = unique(round(distances * 100)); 
h = hist(b, 1:max(b)); 
labels = labels(b == find(h == max(h))); 

% Make a copy of these labels (have to use arrayfun for 4.0.x compatibility) 
blacklabels = arrayfun(@(L)copyobj(L, gca), labels); 

% Shift these labels outward by 15% 
arrayfun(@(x)set(x, 'Position', get(x, 'Position') * 1.15), blacklabels); 

% Now set the other labels to red and change their values 
set(labels, 'COlor', 'red') 
for k = 1:numel(labels) 
    value = str2num(get(labels(k), 'String')) 

    % Convert the value to be between 0 and 100 
    newvalue = 100 * (value/360); 

    set(labels(k), 'String', sprintf('%0.2f', newvalue)) 
end 

enter image description here

+0

我正在等待你的回答!如何显示图像以显示结果? –

+0

@AnderBiguri更新! – Suever

+0

@Suever看起来不错,但是当我将代码保存到一个文件中以在Linux中的Octave 4.0中进行测试时,出现此错误。错误:对strcmp的调用无效。正确用法是: - 内置功能:的strcmp(S1,S2) 错误:从 print_usage称为在管线90柱5 copyobj在管线52列10 test_multiaxis_polar_plot在第31行第13列 错误:评估参数列表元素编号1 错误:从 调用copyobj在第52行第10列 第31列第13列的test_multiaxis_polar_plot –