Hur skapar jag en kontinuerligt uppdaterande "pie chart"?
Hej,
Jag ska försöka skapa ett diagram, behöver egentligen inte något speciellt diagram, som procentuellt visar hur stor del av ytan som är täckt, allt eftersom ytan täcks. Det är en figur som med vald vinkel ska täcka en yta. Koden som finns ser ut såhär:
---------------
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.0001)
end
disp(x+" Done "+y)
---------------
Jag tänker mig att det på något vis ska gå att, procentuellt, sätta in antalet nollor (vilket är vad matrisen täcks med, allt eftersom att figuren omvandlar dem från ettor till nollor), i pie-funktionen. Något i den här stilen:
Pie(numel(0)/numel(0)*100);
Tänker jag superkonstigt här?
Fastnar lite här och får inte det att funka med koden...
Mvh,
Är det en robotklippare som är ute och kör?
Tolkar det som att du vill räkna andelen nollor i matrisen.
Om du tar en matris, säg a=[0 0 0.1 0; 0 0.1 0 0] och sedan gör a(:) så får du alla element i a fast i form av en kolumnvektor.
Om du sedan tar logical(a==0) så får du en kolumnvektor med elementen 1 där det sitter nollor i kolumnvektorn a(:).
Lycka till!