You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Plotly基于Thymeleaf动态数据生成热门5门课程预约次数柱状图?

如何用Thymeleaf结合Plotly生成TOP5课程预约次数柱状图

作为刚接触JavaScript的新手,你其实离成功只差一步——把Thymeleaf渲染的后端数据传递给Plotly就行!我给你整理了一套完整的实现方案,一步步来:

1. 页面结构准备

首先在HTML里添加图表的容器,同时可以保留你原来的表格(也可以根据需求去掉):

<!-- 用于展示Plotly图表的容器 -->
<div id="courseChart"></div>

<!-- 你原来的表格(可选保留,用来同时展示列表数据) -->
<table>
  <thead>
    <tr>
      <th>课程名称</th>
      <th>预约次数</th>
    </tr>
  </thead>
  <tbody>
    <tr th:each="m : ${topCourses}">
      <td th:text="${m.coursName}"></td>
      <td th:text="${m.bookedTimes}"></td>
    </tr>
  </tbody>
</table>

2. 将Thymeleaf数据转为JavaScript数组

我们需要把后端传过来的topCourses列表,拆分成Plotly需要的x轴(课程名称)和y轴(预约次数)数组。用Thymeleaf的内联表达式和遍历就能轻松实现:

<script>
// 生成课程名称数组:遍历topCourses,把每个课程名称转成字符串存入数组
const courseNames = [
  <th:block th:each="course : ${topCourses}">
    "[[${course.coursName}]]",
  </th:block>
];

// 生成预约次数数组:遍历topCourses,把每个预约次数存入数组
const bookedCounts = [
  <th:block th:each="course : ${topCourses}">
    [[${course.bookedTimes}]],
  </th:block>
];

// 处理数组末尾多余的逗号(可选,避免严格模式下的语法错误)
const cleanCourseNames = courseNames.filter(item => item !== '');
const cleanBookedCounts = bookedCounts.filter(item => item !== '');
</script>

这里的[[${...}]]是Thymeleaf的安全内联表达式,会自动转义特殊字符,避免XSS风险;最后过滤数组是为了处理遍历后可能出现的末尾多余逗号问题。

3. 用Plotly渲染柱状图

现在就可以用整理好的数组构建Plotly数据,然后渲染图表了:

<script>
// 构建Plotly的数据结构
const data = [{
  x: cleanCourseNames,
  y: cleanBookedCounts,
  type: 'bar',
  marker: {
    color: '#2E8B57' // 自定义柱子颜色,可选
  }
}];

// 配置图表布局(让展示更清晰)
const layout = {
  title: 'TOP5热门课程预约次数',
  xaxis: { 
    title: '课程名称',
    tickangle: -45 // 让课程名称倾斜显示,避免重叠
  },
  yaxis: { 
    title: '预约次数',
    rangemode: 'tozero' // 强制y轴从0开始,数据对比更直观
  },
  margin: { t: 50, b: 80 } // 调整顶部和底部边距,避免标题/坐标轴被截断
};

// 渲染图表到指定容器
Plotly.newPlot('courseChart', data, layout);
</script>

注意事项

  • 确保你已经在页面中引入了Plotly的JavaScript文件,否则图表无法渲染。
  • 如果你的topCourses可能为空,可以加个判断,比如if (cleanCourseNames.length > 0)再渲染图表,避免空数据报错。

内容的提问来源于stack exchange,提问作者Shayimerdan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 22:47:59