How can I highlight a moving bar in an animation of a bar chart?
dTagged =
MapAt[
Style[#, Red] &,
Rest @ d,
Position[Differences @ d, _Integer?Positive]
] ~Prepend~ First[d];
ListAnimate[
BarChart[#, ChartLabels -> Placed[Style[#, 15] & /@ #, Above]] & /@
dTagged
]
Modifying bsort
to include style changes during Sow
ing:
bsort2[list_] := Module[{A = Style[#, GrayLevel[.6]] & /@ list, tmp},
tmp = Reap[Do[If[First /@ (A[[j]] > A[[j + 1]]),
Sow[ A /. (A[[j]] -> (A[[j]] /. GrayLevel[.6] -> Red))];
{A[[ j + 1]], A[[j]]} = {A[[j]], A[[j + 1]]}],
{i, Length@A}, {j, Length@A - i}]][[2, 1]]; Append[tmp, A]];
d2 = bsort2@RandomSample@Range[20];
opts = {ChartBaseStyle -> EdgeForm[White], BaseStyle -> (FontSize -> 14),
AspectRatio -> 1, Frame -> False, Axes -> False, PlotRangePadding -> 2};
Using ListAnimate
:
ListAnimate[BarChart[Labeled[#, #, Above] & /@ #, opts] & /@ d2]
Using Clock
:
Dynamic[BarChart[Labeled[#, #, Above] & /@ d2[[Clock[{1, Length[d2], 1}, 5, 1]]], opts]]