radar.html 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title>Radar Chart</title>
  5. <script src="../../dist/Chart.bundle.js"></script>
  6. <script src="../utils.js"></script>
  7. <style>
  8. canvas {
  9. -moz-user-select: none;
  10. -webkit-user-select: none;
  11. -ms-user-select: none;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <div style="width:40%">
  17. <canvas id="canvas"></canvas>
  18. </div>
  19. <button id="randomizeData">Randomize Data</button>
  20. <button id="addDataset">Add Dataset</button>
  21. <button id="removeDataset">Remove Dataset</button>
  22. <button id="addData">Add Data</button>
  23. <button id="removeData">Remove Data</button>
  24. <script>
  25. var randomScalingFactor = function() {
  26. return Math.round(Math.random() * 100);
  27. };
  28. var color = Chart.helpers.color;
  29. var config = {
  30. type: 'radar',
  31. data: {
  32. labels: [['Eating', 'Dinner'], ['Drinking', 'Water'], 'Sleeping', ['Designing', 'Graphics'], 'Coding', 'Cycling', 'Running'],
  33. datasets: [{
  34. label: 'My First dataset',
  35. backgroundColor: color(window.chartColors.red).alpha(0.2).rgbString(),
  36. borderColor: window.chartColors.red,
  37. pointBackgroundColor: window.chartColors.red,
  38. data: [
  39. randomScalingFactor(),
  40. randomScalingFactor(),
  41. randomScalingFactor(),
  42. randomScalingFactor(),
  43. randomScalingFactor(),
  44. randomScalingFactor(),
  45. randomScalingFactor()
  46. ]
  47. }, {
  48. label: 'My Second dataset',
  49. backgroundColor: color(window.chartColors.blue).alpha(0.2).rgbString(),
  50. borderColor: window.chartColors.blue,
  51. pointBackgroundColor: window.chartColors.blue,
  52. data: [
  53. randomScalingFactor(),
  54. randomScalingFactor(),
  55. randomScalingFactor(),
  56. randomScalingFactor(),
  57. randomScalingFactor(),
  58. randomScalingFactor(),
  59. randomScalingFactor()
  60. ]
  61. }]
  62. },
  63. options: {
  64. legend: {
  65. position: 'top',
  66. },
  67. title: {
  68. display: true,
  69. text: 'Chart.js Radar Chart'
  70. },
  71. scale: {
  72. ticks: {
  73. beginAtZero: true
  74. }
  75. }
  76. }
  77. };
  78. window.onload = function() {
  79. window.myRadar = new Chart(document.getElementById('canvas'), config);
  80. };
  81. document.getElementById('randomizeData').addEventListener('click', function() {
  82. config.data.datasets.forEach(function(dataset) {
  83. dataset.data = dataset.data.map(function() {
  84. return randomScalingFactor();
  85. });
  86. });
  87. window.myRadar.update();
  88. });
  89. var colorNames = Object.keys(window.chartColors);
  90. document.getElementById('addDataset').addEventListener('click', function() {
  91. var colorName = colorNames[config.data.datasets.length % colorNames.length];
  92. var newColor = window.chartColors[colorName];
  93. var newDataset = {
  94. label: 'Dataset ' + config.data.datasets.length,
  95. borderColor: newColor,
  96. backgroundColor: color(newColor).alpha(0.2).rgbString(),
  97. pointBorderColor: newColor,
  98. data: [],
  99. };
  100. for (var index = 0; index < config.data.labels.length; ++index) {
  101. newDataset.data.push(randomScalingFactor());
  102. }
  103. config.data.datasets.push(newDataset);
  104. window.myRadar.update();
  105. });
  106. document.getElementById('addData').addEventListener('click', function() {
  107. if (config.data.datasets.length > 0) {
  108. config.data.labels.push('dataset #' + config.data.labels.length);
  109. config.data.datasets.forEach(function(dataset) {
  110. dataset.data.push(randomScalingFactor());
  111. });
  112. window.myRadar.update();
  113. }
  114. });
  115. document.getElementById('removeDataset').addEventListener('click', function() {
  116. config.data.datasets.splice(0, 1);
  117. window.myRadar.update();
  118. });
  119. document.getElementById('removeData').addEventListener('click', function() {
  120. config.data.labels.pop(); // remove the label first
  121. config.data.datasets.forEach(function(dataset) {
  122. dataset.data.pop();
  123. });
  124. window.myRadar.update();
  125. });
  126. </script>
  127. </body>
  128. </html>