如何避免Matlab饼图中标题和标签之间的重叠?

时间:2018-02-14 01:20:13

标签: matlab-figure overlap

我正在使用下一个代码在饼图中绘制矩阵中值大于/小于1的百分比。事实上,当我想将标题放在图表上方时,它与其中一个小组的标签。

我尝试用text()替换它但它没有用,而且馅饼上的文档对此没有任何说明。如何避免这种重叠?

eigen = [];     % Modes array
c2 = 170;       % Sound speed divided by 2

%% Room dimensions
lx = 5.74;
ly = 8.1;
lz = 4.66;

i = 1;          % Index for modes array
for nz = 0:50
    for ny = 0:50
        for nx = 0:50
            aux = c2 * sqrt((nx/lx)^2+(ny/ly)^2+(nz/lz)^2);
            if aux < 400        %% If value is into our range of interest
                eigen(i) = aux;
                i=i+1;
            end
        end
    end
end

eigen = round(sort(eigen'),1);
eigen
% dif = eigen(2:end)-eigen(1:end-1);  % Distance between modes
x = 0;  %% dif >= 1
y = 0;  %% dif <= 1
dif = [];

for i=2:length(eigen)
    if eigen(i)-eigen(i-1) >= 1
        x = x+1;
    else
        y = y+1;
    end
end

figure
dif = [x,y];
explode = [1 1];
graf = pie(dif,explode);

hText = findobj(graf,'Type','text');
percentValues = get(hText,'String');
txt = {'Smaller than 1 Hz: ';'Greater than 1 Hz: '};
combinedtxt = strcat(txt,percentValues);
oldExtents_cell = get(hText,'Extent');
oldExtents = cell2mat(oldExtents_cell);
hText(1).String = combinedtxt(1);
hText(2).String = combinedtxt(2);

title('Distance between modes')

1 个答案:

答案 0 :(得分:0)

您可以旋转饼图,使图形看起来更好。此外,您可以使用position按如下方式分配文字,

figure
dif = [x,y];
explode = [1 1];
graf = pie(dif,explode);

hText = findobj(graf,'Type','text');
percentValues = get(hText,'String');
txt = {'Smaller than 1 Hz: ';'Greater than 1 Hz: '};
combinedtxt = strcat(txt,percentValues);
oldExtents_cell = get(hText,'Extent');
oldExtents = cell2mat(oldExtents_cell);
hText(1).String = combinedtxt(1);
hText(2).String = combinedtxt(2);


view([90 90])   % this is to rotate the chart

textPositions_cell = get(hText,{'Position'}); 
textPositions = cell2mat(textPositions_cell); 
textPositions(:,1) = textPositions(:,1) + 0.2; % replace 0.2 with any offset value you want

hText(1).Position = textPositions(1,:);
hText(2).Position = textPositions(2,:);

title('Distance between modes')

enter image description here

您可以通过删除view命令来仅更改文本位置(不旋转)。