Radar Chart

Radar Chart - 图1

options data setup

  1. function getLineColor(ctx) {
  2. return Utils.color(ctx.datasetIndex);
  3. }
  4. function alternatePointStyles(ctx) {
  5. var index = ctx.dataIndex;
  6. return index % 2 === 0 ? 'circle' : 'rect';
  7. }
  8. function makeHalfAsOpaque(ctx) {
  9. return Utils.transparentize(getLineColor(ctx));
  10. }
  11. function make20PercentOpaque(ctx) {
  12. return Utils.transparentize(getLineColor(ctx), 0.8);
  13. }
  14. function adjustRadiusBasedOnData(ctx) {
  15. var v = ctx.parsed.y;
  16. return v < 10 ? 5
  17. : v < 25 ? 7
  18. : v < 50 ? 9
  19. : v < 75 ? 11
  20. : 15;
  21. }
  22. const config = {
  23. type: 'radar',
  24. data: data,
  25. options: {
  26. plugins: {
  27. legend: false,
  28. tooltip: false,
  29. },
  30. elements: {
  31. line: {
  32. backgroundColor: make20PercentOpaque,
  33. borderColor: getLineColor,
  34. },
  35. point: {
  36. backgroundColor: getLineColor,
  37. hoverBackgroundColor: makeHalfAsOpaque,
  38. radius: adjustRadiusBasedOnData,
  39. pointStyle: alternatePointStyles,
  40. hoverRadius: 15,
  41. }
  42. }
  43. }
  44. };
  1. function generateData() {
  2. return Utils.numbers({
  3. count: DATA_COUNT,
  4. min: 0,
  5. max: 100
  6. });
  7. }
  8. const data = {
  9. labels: [['Eating', 'Dinner'], ['Drinking', 'Water'], 'Sleeping', ['Designing', 'Graphics'], 'Coding', 'Cycling', 'Running'],
  10. datasets: [{
  11. data: generateData()
  12. }]
  13. };
  1. const DATA_COUNT = 7;
  2. Utils.srand(110);
  3. const actions = [
  4. {
  5. name: 'Randomize',
  6. handler(chart) {
  7. chart.data.datasets.forEach(dataset => {
  8. dataset.data = generateData();
  9. });
  10. chart.update();
  11. }
  12. },
  13. ];