Advertisement
Guest User

Benford's Law Visualisation

a guest
Aug 3rd, 2011
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. (*this code is terrible, sorry!*)
  2. frame[t_] :=
  3. Module[{markers, \[Alpha], random, firstdig, list, frame, \[Delta],
  4. fn, bc, xlabs, data},
  5. markers = Flatten[Table[i 10^n, {n, 0, 3}, {i, 9}]];
  6. firstdig[i_] := Module[{x = Mod[i, 9]}, If[x == 0, 9, x]];
  7. \[Alpha] = 0.8;
  8. random := Times @@ RandomReal[{\[Alpha], 1/\[Alpha]}, t];
  9. list = Table[random, {i, 500}];
  10. bc = BinCounts[Log /@ list, 1];
  11. bc = 2 bc/Max[bc];
  12. xlabs = Range[Log@Min[list], Log@Max[list], 1];
  13. data = Partition[Riffle[xlabs, bc], 2];
  14. (*data=Select[data,0<#[[1]]<Log[Max[markers]]&];*)
  15. fn = Interpolation[data];
  16. \[Delta] = 0.09;
  17. frame = Show[
  18. Graphics[{
  19. Table[{
  20. Text[
  21. firstdig[
  22. i], {(Log[markers[[i]]] + Log[markers[[i + 1]]])/2, -1.2}],
  23. ColorData["Rainbow"][Mod[i, 9]/10],
  24. Rectangle[{Log[markers[[i]]], -1}, {Log[markers[[i + 1]]], 0}]
  25. }, {i, Length@markers - 1}],
  26. {
  27. Text[Style["units", Medium], {0.5 Log[10], -1.6}],
  28. Text[Style["tens", Medium], {1.5 Log[10], -1.6}],
  29. Text[Style["hundreds", Medium], {2.5 Log[10], -1.6}],
  30. Text[Style["thousands", Medium], {3.5 Log[10], -1.6}]
  31. }
  32. }, ImageSize -> {320, 180}]
  33. ,
  34.  
  35. Graphics[{EdgeForm[],
  36. Table[
  37. {ColorData["Rainbow"][First@RealDigits[Exp[ x + 0.05]][[1]]/10],
  38. Polygon[{{x, 0}, {x + \[Delta], 0}, {x + \[Delta],
  39. fn[x + \[Delta]]}, {x, fn[x]}}]}
  40. , {x, Max[0, Min[First /@ data]],
  41. Min[Max[Log /@ markers],
  42. Max[First /@ data]] - \[Delta], \[Delta]}]
  43. }]
  44. ];
  45. frame
  46. ];
  47.  
  48. frame[100]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement