Advertisement
Guest User

Untitled

a guest
Mar 28th, 2015
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 7.23 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
  5. <meta charset ="utf-8">
  6. </head>
  7. <body>
  8. <h1>Popis stanovništva po bitnim kontinentima u tisućama</h1>
  9. <script>
  10. //Standardno definiranje podataka - primjer ulov ribe po godinama
  11. //Dvodimenzionalno polje u kojem svaki element ima dva atributa
  12. var data = [
  13. {"godina": "Svijet","ribe": 7162119},
  14. {"godina": "Azija","ribe": 4298723},
  15. {"godina": "Afrika","ribe": 1110635},
  16. {"godina": "Amerike","ribe": 972005},
  17. {"godina": "Europa","ribe": 742452},
  18. //{"godina": "Austrijanci","ribe": 297},
  19. //{"godina": "Bugari","ribe": 350},
  20. //{"godina": "Crnogorci","ribe": 4517},
  21. //{"godina": "Česi","ribe": 9641},
  22. //{"godina": "Makedonci","ribe": 4138},
  23. //{"godina": "Nijemci","ribe": 2965},
  24. //{"godina": "Poljaci","ribe": 672},
  25. //{"godina": "Romi","ribe": 16975},
  26. //{"godina": "Rumunji","ribe": 435},
  27. //{"godina": "Rusi","ribe": 1279},
  28. //{"godina": "Rusini","ribe": 1936},
  29. //{"godina": "Slovaci","ribe": 4753},
  30. //{"godina": "Slovenci","ribe": 10517},
  31. //{"godina": "Srbi","ribe": 186633},
  32. //{"godina": "Talijani","ribe": 17807},
  33. //{"godina": "Turci","ribe": 367},
  34. //{"godina": "Ukrajinci","ribe": 1878},
  35. //{"godina": "Vlasi","ribe": 29},
  36. //{"godina": "Židovi","ribe": 509},
  37. //{"godina": "Bosanci","ribe": 2059},
  38. //{"godina": "Hercegovci","ribe": 75},
  39. //{"godina": "Kosovari","ribe": 568},
  40. //{"godina": "Jugoslaveni","ribe": 331},
  41. //{"godina": "Belgijanci","ribe": 62},
  42. //{"godina": "Bjelorusi","ribe": 68},
  43. //{"godina": "Britanci","ribe": 139},
  44. //{"godina": "Englezi","ribe": 212},
  45. //{"godina": "Škoti","ribe": 16},
  46. //{"godina": "Danci","ribe": 24},
  47. /*{"godina": "Finci","ribe": 31},
  48. {"godina": "Francuzi","ribe": 273},
  49. {"godina": "Grci","ribe": 105},
  50. {"godina": "Nizozemci","ribe": 156},
  51. {"godina": "Irci","ribe": 39},
  52. {"godina": "Letonci","ribe": 14},
  53. {"godina": "Litavci","ribe": 19},
  54. {"godina": "Estonci","ribe": 13},
  55. {"godina": "Norvežani","ribe": 22},
  56. {"godina": "Portugalci","ribe": 30},
  57. {"godina": "Španjolci","ribe": 85},
  58. {"godina": "Šveđani","ribe": 58},
  59. {"godina": "Švicarci","ribe": 137},
  60. {"godina": "Moldavci","ribe": 74},
  61. {"godina": "Aškalije","ribe": 172},
  62. {"godina": "Goranci","ribe": 428},
  63. {"godina": "Ostali narodi Europe","ribe": 265},
  64. {"godina": "Amerikanci","ribe": 419},
  65. {"godina": "Kanađani","ribe": 91},
  66. {"godina": "Meksikanci","ribe": 25},
  67. {"godina": "Kubanci","ribe": 13},
  68. {"godina": "Ostali narodi Sjeverne i Srednje Amerike","ribe": 126},
  69. {"godina": "Argentinci","ribe": 35},
  70. {"godina": "Bolivijci","ribe": 7},
  71. {"godina": "Brazilci","ribe": 88},
  72. {"godina": "Čileanci","ribe": 40},
  73. {"godina": "Peruanci","ribe": 33},
  74. {"godina": "Kolumbijci","ribe": 23},
  75. {"godina": "Ostali narodi Južne Amerike","ribe": 36},
  76. {"godina": "Alžirci","ribe": 25},
  77. {"godina": "Egipćani","ribe": 16},
  78. {"godina": "Libijci","ribe": 9},
  79. {"godina": "Sudanci","ribe": 30},
  80. {"godina": "Ostali narodi Afrike","ribe": 160},
  81. {"godina": "Arapi","ribe": 139},
  82. {"godina": "Indijci","ribe": 45},
  83. {"godina": "Iračani","ribe": 24},
  84. {"godina": "Iranci","ribe": 25},
  85. {"godina": "Japanci","ribe": 54},
  86. {"godina": "Kinezi","ribe": 492},
  87. {"godina": "Korejci","ribe": 26},
  88. {"godina": "Jordanci","ribe": 29},
  89. {"godina": "Libanonci","ribe": 36},
  90. {"godina": "Sirijci","ribe": 71},
  91. {"godina": "Palestinci","ribe": 68},
  92. {"godina": "Armenci","ribe": 37},
  93. {"godina": "Gruzijci","ribe": 20},
  94. {"godina": "Ostali narodi Azije","ribe": 208},
  95. {"godina": "Australci","ribe": 88},
  96. {"godina": "Novozelanđani","ribe": 14},
  97. {"godina": "Ostali narodi Oceanije","ribe": 25},*/
  98. //{"godina": "Istrani","ribe": 25491},
  99. //{"godina": "Dalmatinci","ribe": 705},
  100. //{"godina": "Primorci","ribe": 50},
  101. //{"godina": "Slavonci","ribe": 133},
  102. //{"godina": "Međimurci","ribe": 135},
  103. //{"godina": "Zagorci","ribe": 139},
  104. //{"godina": "Ostale regionalne pripadnosti","ribe": 572},
  105. //{"godina": "Muslimani","ribe": 7558},
  106. //{"godina": "Pravoslavci","ribe": 2560},
  107. //{"godina": "Ostala vjerska izjašnjavanja","ribe": 64},
  108. //{"godina": "Neraspoređeno","ribe": 731},
  109. //{"godina": "Ne izjašnjavaju se","ribe": 26763},
  110. //{"godina": "Nepoznato","ribe": 8877}]
  111. ]
  112. //Definiranje širine barova kao i njihova visina
  113. var barWidth = 150;
  114. var width = (barWidth + 100) * data.length;
  115. var height = 200;
  116. //Kreiranje skale u kojoj ćemo prikazati bar graf
  117. //http://alignedleft.com/tutorials/d3/scales
  118. var xScale = d3.scale.linear()
  119. .domain([0, data.length])
  120. .range([0, width]);
  121. //Ulazni podaci se nalaze u domain, a izlazni u range što znači da će x podaci
  122. //biti uzimani od 0-duljine_podataka pa izlazni 0-širina canvasa
  123. //Za y varijablu ulaz se uzima od 0-maksimalne vrijednosti ulova ribe
  124. //a izlaz je prikazan od 0-najviše visine zadanog bar grafa
  125. //prema ovom primjeru bar visine 200 odgovarat će ulovu ribe 77
  126. var yScale = d3.scale.linear()
  127. .domain([0, d3.max(data, function(d) { return d.ribe; })])
  128. //.domain([0, 100]) //primjer
  129. .rangeRound([0, height]);
  130. var color = d3.scale.linear()
  131. .domain([0, data.length])
  132. .range(["red","blue"]);
  133. //dodavanje canvas u DOM
  134. var bargrph = d3.select("body")
  135. .append("svg")
  136. .attr("width", width)
  137. .attr("height", height);
  138. //Dodavanje rect u vizualizaciju bargrph koja je definirana prije
  139. bargrph.selectAll("rect")
  140. //data-enter-append se dodaju kad novim podacima dodjeljujemo nove vizualizacije
  141. //pogledati link gornji
  142. .data(data)
  143. .enter()
  144. .append("rect")
  145. .attr("x", function(d, i) { return xScale(i); })
  146. .attr("y", function(d) { return height - yScale(d.ribe); })
  147. .attr("height", function(d) { return yScale(d.ribe); })
  148. .attr("width", barWidth)
  149. //.attr("fill", "blue");
  150. //.attr("fill", "#60009f");
  151. .attr("fill", function(d,i) {console.log(i, color(i)); return color(i); });
  152. //console.log služi za ispisivanje željenih podataka u konzoli
  153. bargrph.selectAll("text")
  154. .data(data)
  155. .enter()
  156. .append("text")
  157. .attr("x", function(d, i) { return xScale(i); })
  158. .attr("y", function(d) { return height - yScale(d.ribe); })
  159. //dx i dy su padding-zi od položaja x i y
  160. //tj. to je ručno pomicanje od gore određenih koordinata
  161. .attr("dx", barWidth/2)
  162. .attr("dy", "1.2em")
  163. // 1em = standardna veličina korištenog fonta
  164. // 2em = dvostruko veća slova od korištenog fonta
  165. .attr("text-anchor", "middle")
  166. //anchor je kao onaj align unutar textboxa - govori gdje će tekst biti ispisan
  167. .text(function(d) { return d.ribe;})
  168. .attr("fill", "white");
  169. bargrph.attr("height", height + 30);
  170. //dodajemo padding na dno grafa jer ako hoćemo dodati tekst ispod grafa kojem
  171. //smo definirali širinu i visinu potrebno je dodati nešto dolje jer se inače
  172. //neće vidjeti
  173. bargrph.selectAll("text.yAxis")
  174. .data(data)
  175. .enter()
  176. .append("text")
  177. .attr("x", function(d, i) { return xScale(i) + barWidth ; })
  178. .attr("y", height)
  179. .attr("dx", -barWidth/2)
  180. .attr("text-anchor", "middle")
  181. .attr("style", "font-size: 12; font-family: Helvetica, sans-serif")
  182. .text(function(d) { return d.godina;})
  183. .attr("transform", "translate(0, 18)")
  184. //umjesto da se dira atribut y - visina
  185. //može se pomicati transformacijom, tj. translacijom u ovom slučaju gdje su (0,18)
  186. //koordinate x - ništa, y - za 18 dolje
  187. .attr("class", "yAxis");
  188. //atribut class dodijeljuje ime ovim text.yAxis yAxis po kojem se mogu onda raspoznavati
  189. //pogledati u Elements u debugger modu
  190. </script>
  191. </body>
  192. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement