aa.html 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>2D Scatter Plot with Time-based Colorbar</title>
  7. <!-- 引入 Plotly.js -->
  8. <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
  9. </head>
  10. <body>
  11. <div id="plotly-chart"></div>
  12. <script>
  13. // 示例数据
  14. const colorbarData = [
  15. "2023-03",
  16. "2023-03",
  17. "2023-03",
  18. "2023-03",
  19. "2023-03",
  20. "2023-03",
  21. "2023-03",
  22. "2023-03",
  23. "2023-04",
  24. "2023-04",
  25. "2023-04",
  26. "2023-04",
  27. "2023-04",
  28. "2023-04",
  29. "2023-04",
  30. "2023-04",
  31. "2023-06",
  32. "2023-06",
  33. ];
  34. const xData = [
  35. 4.2, 5.2, 4.04, 3.91, 3.69, 3.73, 4.31, 3.99, 3.75, 3.77, 3.49, 3.18,
  36. 2.77, 3, 3.52, 3.23, 3.09, 3.39,
  37. ];
  38. const yData = [
  39. 310.18, 391.66, 286.01, 242.07, 244.45, 250.31, 302.12, 240.6, 251.22,
  40. 215.52, 135.86, 75.99, 10.25, 100.25, 310.25, 410.25, 190.25, 210.25,
  41. ];
  42. // 映射时间到数值:2023-03 -> 1, 2023-04 -> 2, 2023-06 -> 3
  43. const timeMapping = {
  44. "2023-03": 1,
  45. "2023-04": 2,
  46. "2023-06": 3,
  47. };
  48. // 将时间字符串映射为数字
  49. const colorValues = colorbarData.map((date) => timeMapping[date]);
  50. // 配置散点图的数据
  51. const trace = {
  52. x: xData, // 风速数据
  53. y: yData, // 有功功率数据
  54. mode: "markers", // 选择散点图
  55. type: "scatter", // 散点图
  56. text: colorbarData, // 鼠标悬停时显示的文本(时间)
  57. hovertemplate:
  58. "<b>时间: %{text}</b><br>" +
  59. "风速: %{x} m/s<br>" +
  60. "功率: %{y} kW<extra></extra>", // 鼠标悬停时显示的内容
  61. marker: {
  62. color: colorValues, // 使用数字化的时间数据来映射颜色
  63. colorscale: "Viridis", // 颜色渐变
  64. colorbar: {
  65. title: "年月", // 色条标题
  66. tickvals: [1, 2, 3], // 设置 colorbar 上的刻度
  67. ticktext: ["2023-03", "2023-04", "2023-06"], // 设置刻度对应的时间标签
  68. },
  69. size: 10, // 设置散点的大小
  70. },
  71. };
  72. // "风速: %{x}(m/s)<br>" +
  73. // "有功功率: %{y}(kw)<br>" +
  74. // "时间: %{marker.color:.2f}<extra></extra>", // 鼠标悬停时显示的内容
  75. // 配置布局
  76. const layout = {
  77. title: "风速与有功功率的散点图",
  78. xaxis: {
  79. title: "风速 (m/s)", // X轴标题
  80. },
  81. yaxis: {
  82. title: "有功功率 (kW)", // Y轴标题
  83. },
  84. };
  85. // 绘制图表
  86. Plotly.newPlot("plotly-chart", [trace], layout);
  87. </script>
  88. </body>
  89. </html>