![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/772903/image.png)
How do I create a continuously updating pie chart?
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi, I am having problems adding a pie chart that updates when the functions update. The goal is to have a figure filling out an area (an array, that is being transformed from ones to zeros), as well as a chart that, if possible, continuously updates, preferably with percentage. I would guess adding something like "pie((numel(x)/numel(x))*100)", where x is the amount of zeros? I am very new to Matlab so any tips would be much appreciated! Here is what I have so far:
x = 3.0;
y = 3.0;
theta = 20;
xt = cosd(theta);
grass = [0 0.7 0.2
0.4 0.6 0
0.4 0.2 0];
A = ones(30, 20);
A(:, 1) = 2; %B1 = A(:,1);
A(:,20) = 2; %B2 = A(:,20);
A(30,:) = 2; %B3 = A(30,:);
A(1,:) = 2; %B4 = A(1,:);
%A(2,2) = 0;
imagesc(A)
colormap(grass)
axis equal
while sum(A, 'all') > 192
if A(round(y),round(x)+2) == 2
xt = -cosd(theta);
elseif A(round(y),round(x)-2) == 2
xt = cosd(theta);
end
if A(round(y)+2,round(x)) == 2
theta = -abs(theta);
elseif A(round(y)-2,round(x)) == 2
theta = abs(theta);
end
x = x + xt;
y = y + sind(theta);
A(round(y),round(x+1)) = 0;
A(round(y),round(x-1)) = 0;
A(round(y+1),round(x)) = 0;
A(round(y-1),round(x)) = 0;
A(round(y+1),round(x-1)) = 0;
A(round(y+1),round(x+1)) = 0;
A(round(y-1),round(x-1)) = 0;
A(round(y-1),round(x+1)) = 0;
disp("x = "+x+" y = "+y)
imagesc(A)
axis equal
pause(0.0000001)
end
disp(x+" Done "+y)
0 Kommentare
Antworten (1)
Pavan Guntha
am 20 Okt. 2021
Hello Aaron,
You could use pie command to plot a pie chart. In order to update it dynamically, you could include the pie chart functionality into the while loop in your code as follows:
figure(1)
imagesc(A)
colormap(grass)
axis equal
while sum(A, 'all') > 192
if A(round(y),round(x)+2) == 2
xt = -cosd(theta);
elseif A(round(y),round(x)-2) == 2
xt = cosd(theta);
end
if A(round(y)+2,round(x)) == 2
theta = -abs(theta);
elseif A(round(y)-2,round(x)) == 2
theta = abs(theta);
end
x = x + xt;
y = y + sind(theta);
A(round(y),round(x+1)) = 0;
A(round(y),round(x-1)) = 0;
A(round(y+1),round(x)) = 0;
A(round(y-1),round(x)) = 0;
A(round(y+1),round(x-1)) = 0;
A(round(y+1),round(x+1)) = 0;
A(round(y-1),round(x-1)) = 0;
A(round(y-1),round(x+1)) = 0;
disp("x = "+x+" y = "+y)
figure(1)
imagesc(A)
axis equal
% Pie Chart Plotting functionality
figure(2)
pie([sum(A==0, "all") sum(A~=0, "all")], '%.3f%%')
labels = {'Covered Region', 'Uncovered Region'};
legend(labels,"Location","northeast")
pause(0.0000001)
end
The result of the above code is as follows where the data presented in the Pie chart gets updated in every iteration:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/772903/image.png)
Hope this helps!
0 Kommentare
Siehe auch
Kategorien
Mehr zu Pie Charts finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!