aa.html 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>3D Scatter Chart with ECharts-GL</title>
  6. <!-- 引入 ECharts 和 ECharts-GL -->
  7. <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.0/dist/echarts.min.js"></script>
  8. <script src="https://cdn.jsdelivr.net/npm/echarts-gl@2.0.9/dist/echarts-gl.min.js"></script>
  9. </head>
  10. <body>
  11. <!-- 准备一个具备宽高的 DOM 容器 -->
  12. <div id="main" style="width: 600px; height: 600px"></div>
  13. <script>
  14. // 初始化图表
  15. const myChart = echarts.init(document.getElementById("main"));
  16. // 生成随机测试数据(100个点)
  17. function generateRandomData(count) {
  18. let data = [];
  19. for (let i = 0; i < count; i++) {
  20. data.push([
  21. Math.random() * 10, // x
  22. Math.random() * 10, // y
  23. Math.random() * 10, // z
  24. Math.random(), // 用于颜色映射的第四个维度(可选)
  25. ]);
  26. }
  27. return data;
  28. }
  29. // 配置项
  30. const option = {
  31. // 启用 3D 坐标系
  32. globe: {
  33. environment: "auto",
  34. backgroundColor: "#FFFFFF", // 设置背景为白色
  35. baseTexture: null, // 移除默认的球体纹理(不显示黑色球体)
  36. },
  37. // 3D 坐标轴配置
  38. xAxis3D: {
  39. type: "value",
  40. name: "X Axis",
  41. },
  42. yAxis3D: {
  43. type: "value",
  44. name: "Y Axis",
  45. },
  46. zAxis3D: {
  47. type: "value",
  48. name: "Z Axis",
  49. },
  50. // 3D 网格配置
  51. grid3D: {
  52. viewControl: {
  53. autoRotate: true, // 自动旋转
  54. autoRotateSpeed: 10, // 旋转速度(1-10)
  55. },
  56. axisPointer: {
  57. show: true,
  58. color: "#fff",
  59. },
  60. },
  61. // 数据集(使用随机生成的数据)
  62. dataset: {
  63. source: generateRandomData(100),
  64. },
  65. // 系列配置
  66. series: [
  67. {
  68. type: "scatter3D",
  69. // 数据维度映射(x, y, z)
  70. encode: {
  71. x: 0,
  72. y: 1,
  73. z: 2,
  74. },
  75. // 点的大小
  76. symbolSize: 8,
  77. // 颜色配置(使用第四个维度)
  78. itemStyle: {
  79. color: function (params) {
  80. // 使用第四个维度值映射到颜色
  81. const value = params.value[3];
  82. return echarts.color.modifyHSL(
  83. "#5A94DF",
  84. undefined,
  85. undefined,
  86. undefined,
  87. value * 0.5
  88. );
  89. },
  90. },
  91. },
  92. ],
  93. // 工具栏
  94. toolbox: {
  95. show: true,
  96. feature: {
  97. saveAsImage: {
  98. show: true,
  99. type: "png",
  100. },
  101. myTool: {
  102. show: true,
  103. title: "切换视角",
  104. icon: "path://M432.45,595.444c0,2.177-4.661,6.82-11.305,6.82c-6.475,0-11.306-4.567-11.306-6.82s4.852-6.812,11.306-6.812C427.841,588.632,432.452,593.191,432.45,595.444L432.45,595.444z",
  105. onclick: function () {
  106. myChart.setOption({
  107. grid3D: {
  108. viewControl: {
  109. alpha: 45,
  110. beta: 30,
  111. },
  112. },
  113. });
  114. },
  115. },
  116. },
  117. },
  118. };
  119. // 应用配置
  120. myChart.setOption(option);
  121. // 窗口大小改变时自动调整图表
  122. window.addEventListener("resize", function () {
  123. myChart.resize();
  124. });
  125. </script>
  126. </body>
  127. </html>