Я использую функцию rose2 в своем скрипте, чтобы построить график розы. Я работаю с Matlab 2016a и поэтому все еще использую функцию розы. Я использую rose2, чтобы иметь возможность установить максимальное значение для оси r и заполнить треугольники. Я использую «findall», чтобы повернуть расположение меток оси R. Это работает очень хорошо:
maxHistogramValue = 100;
f=figure;
clf
% Set the max value to maxHistogramValue:
polar(0, maxHistogramValue,'-k')
% Set the location of the R-axis labels in degrees.
% Extract all of the 'Text' objects from the polar plot.
ax = findall(f.Children, 'Type', 'Axes');
% Filter the 'Text' objects by the 'HorizontalAlignment' property.
% PLEASE NOTE: This may not generalize to other versions of MATLAB
% where the default 'HorizontalAlignment' value for R-axis labels is not
% set to 'left'.
labels = findall(ax, 'Type', 'Text', 'HorizontalAlignment', 'left');
% Set the degrees of the R-axis Labels.
degrees = 285;
% Update the position of each R-axis label.
for label = labels'
currentX = label.Position(1);
currentY = label.Position(2);
radius = sqrt(currentX^2 + currentY^2);
newX = cos(degtorad(degrees)) * radius;
newY = sin(degtorad(degrees)) * radius;
label.Position = [newX, newY];
end
hold on;
% Now use rose2:
rose2(inp, theta_rad)
%make transparent
alpha(0.5)
view(-90,90)
И я понял, как изменить размер шрифта с помощью:
labels = findall(ax, 'Type', 'Text');
for label = labels'
label.FontSize = 16;
end
Но я хочу отображать углы с символом градуса. Я попытался добавить его в цикл, но, во-первых, отображаются неверные числа, а во-вторых, он также меняет ось r, чего я, конечно, не хочу.
labels = findall(ax, 'Type', 'Text');
for label = labels'
label.FontSize = 16;
label.String=label.String+char(176);
end
Может ли кто-нибудь помочь, пожалуйста???
Спасибо!
Попробуйте alpha(0.5) либо в функции rose2, либо в нижней части скрипта, чтобы получить желаемую прозрачность.
Также попробуйте polaraxes определить размер шрифта.
ax = polaraxes;
ax.FontSize = 25;
Я хотел бы помочь вам больше, но я не могу :( У меня больше нет Matlab, поэтому я не могу протестировать ваш код.
Большинство людей имеют доступ к MATLAB здесь: matlab.mathworks.com
Если вы посмотрите на labels, вы увидите, что он содержит больше ярлыков. Вы только хотите изменить labels(1:12):
labels = findall(ax, 'Type', 'Text');
for label = labels(1:12)'
label.String=[label.String char(176)];
end
Кроме того, ваш label.String=label.String+char(176); не является синтаксисом Matlab.
Спасибо! -Определение альфы внизу скрипта работает отлично. -Но у меня проблемы с поляраксами. Если я использую ваши командные строки, значения отображаются дважды, один раз маленьким и один раз размером шрифта 25, и данные больше не отображаются. В зависимости от того, где я вставляю ваши строки в свой скрипт, я дополнительно получаю следующие ошибки: Ошибка при использовании нового графика (строка 76) Добавление декартова графика к полярным осям не поддерживается. Ошибка в полярности (строка 74) cax = newplot(cax); Ошибка в rose2 (строка 84) h = polar(t,r); Ошибка в RosePlot_PAC (строка 157) rose2(inp, theta_rad)