clustering_bikmeans.html 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset='utf-8'>
  5. <meta name="viewport" content="width=device-width, initial-scale=1" />
  6. <script src="../lib/esl.js"></script>
  7. <script src="../lib/config.js"></script>
  8. <script src="../lib/jquery.min.js"></script>
  9. </head>
  10. <body>
  11. <style>
  12. html, body, #main {
  13. width: 100%;
  14. height: 100%;
  15. margin: 0;
  16. padding: 0;
  17. }
  18. </style>
  19. <div id="main"></div>
  20. <script>
  21. require([
  22. 'echarts',
  23. 'ecStat'
  24. ], function (echarts, ecStat) {
  25. var chart = echarts.init(document.getElementById('main'));
  26. window.onresize = function () {
  27. chart.resize();
  28. };
  29. $.getJSON('../data/clustering_dataset2.json')
  30. .done(function (data) {
  31. var clusterNumber = 2;
  32. var result = ecStat.clustering.hierarchicalKMeans(data, clusterNumber);
  33. var centroids = result.centroids;
  34. var ptsInCluster = result.pointsInCluster;
  35. var series = [];
  36. for (var i = 0; i < centroids.length; i++) {
  37. series.push({
  38. name: 'cluster' + i,
  39. type: 'scatter',
  40. data: ptsInCluster[i],
  41. markPoint: {
  42. symbolSize: 30,
  43. label: {
  44. normal: {
  45. show: false
  46. },
  47. emphasis: {
  48. show: true,
  49. position: 'top',
  50. formatter: function (params) {
  51. return Math.round(params.data.coord[0] * 100) / 100 + ' '
  52. + Math.round(params.data.coord[1] * 100) / 100 + ' ';
  53. },
  54. textStyle: {
  55. color: '#000'
  56. }
  57. }
  58. },
  59. itemStyle: {
  60. normal: {
  61. opacity: 0.8
  62. }
  63. },
  64. data: [{
  65. coord: centroids[i]
  66. }]
  67. }
  68. });
  69. }
  70. chart.setOption({
  71. legend: {
  72. data: []
  73. },
  74. tooltip: {
  75. trigger: 'axis',
  76. axisPointer: {
  77. type: 'cross'
  78. }
  79. },
  80. xAxis: {
  81. type: 'value'
  82. },
  83. yAxis: {
  84. type: 'value'
  85. },
  86. series: series
  87. });
  88. });
  89. });
  90. </script>
  91. </body>
  92. </html>