radar.html 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <!DOCTYPE html>
  2. <html lang="en-US">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=Edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <title>area > radar | Chart.js sample</title>
  8. <link rel="stylesheet" type="text/css" href="../../style.css">
  9. <script src="../../../dist/Chart.bundle.js"></script>
  10. <script src="../../utils.js"></script>
  11. <script src="analyser.js"></script>
  12. </head>
  13. <body>
  14. <div class="content">
  15. <div class="wrapper" style="max-width: 512px; margin: auto">
  16. <canvas id="chart-0"></canvas>
  17. </div>
  18. <div class="toolbar">
  19. <button onclick="togglePropagate(this)">Propagate</button>
  20. <button onclick="toggleSmooth(this)">Smooth</button>
  21. <button onclick="randomize(this)">Randomize</button>
  22. </div>
  23. <div id="chart-analyser" class="analyser"></div>
  24. </div>
  25. <script>
  26. var presets = window.chartColors;
  27. var utils = Samples.utils;
  28. var inputs = {
  29. min: 8,
  30. max: 16,
  31. count: 8,
  32. decimals: 2,
  33. continuity: 1
  34. };
  35. function generateData() {
  36. // radar chart doesn't support stacked values, let's do it manually
  37. var values = utils.numbers(inputs);
  38. inputs.from = values;
  39. return values;
  40. }
  41. function generateLabels() {
  42. return utils.months({count: inputs.count});
  43. }
  44. utils.srand(42);
  45. var data = {
  46. labels: generateLabels(),
  47. datasets: [{
  48. backgroundColor: utils.transparentize(presets.red),
  49. borderColor: presets.red,
  50. data: generateData(),
  51. label: 'D0'
  52. }, {
  53. backgroundColor: utils.transparentize(presets.orange),
  54. borderColor: presets.orange,
  55. data: generateData(),
  56. hidden: true,
  57. label: 'D1',
  58. fill: '-1'
  59. }, {
  60. backgroundColor: utils.transparentize(presets.yellow),
  61. borderColor: presets.yellow,
  62. data: generateData(),
  63. label: 'D2',
  64. fill: 1
  65. }, {
  66. backgroundColor: utils.transparentize(presets.green),
  67. borderColor: presets.green,
  68. data: generateData(),
  69. label: 'D3',
  70. fill: false
  71. }, {
  72. backgroundColor: utils.transparentize(presets.blue),
  73. borderColor: presets.blue,
  74. data: generateData(),
  75. label: 'D4',
  76. fill: '-1'
  77. }, {
  78. backgroundColor: utils.transparentize(presets.purple),
  79. borderColor: presets.purple,
  80. data: generateData(),
  81. label: 'D5',
  82. fill: '-1'
  83. }]
  84. };
  85. var options = {
  86. maintainAspectRatio: true,
  87. spanGaps: false,
  88. elements: {
  89. line: {
  90. tension: 0.000001
  91. }
  92. },
  93. plugins: {
  94. filler: {
  95. propagate: false
  96. },
  97. 'samples-filler-analyser': {
  98. target: 'chart-analyser'
  99. }
  100. }
  101. };
  102. var chart = new Chart('chart-0', {
  103. type: 'radar',
  104. data: data,
  105. options: options
  106. });
  107. // eslint-disable-next-line no-unused-vars
  108. function togglePropagate(btn) {
  109. var value = btn.classList.toggle('btn-on');
  110. chart.options.plugins.filler.propagate = value;
  111. chart.update();
  112. }
  113. // eslint-disable-next-line no-unused-vars
  114. function toggleSmooth(btn) {
  115. var value = btn.classList.toggle('btn-on');
  116. chart.options.elements.line.tension = value ? 0.4 : 0.000001;
  117. chart.update();
  118. }
  119. // eslint-disable-next-line no-unused-vars
  120. function randomize() {
  121. inputs.from = [];
  122. chart.data.datasets.forEach(function(dataset) {
  123. dataset.data = generateData();
  124. });
  125. chart.update();
  126. }
  127. </script>
  128. </body>
  129. </html>