网站域名是什/全球热搜榜排名今日

网站域名是什,全球热搜榜排名今日,wordpress网站怎么设置关键词,百度网站建设推广在现代 Web 开发中,数据可视化是一个重要的组成部分,而 Highcharts 是一个广泛使用的 JavaScript 图表库,可以帮助开发者在 Web 页面上轻松地绘制丰富的图表。在本文中,我们将基于 Highcharts 创建一个用于答题统计的柱状图&#…

在现代 Web 开发中,数据可视化是一个重要的组成部分,而 Highcharts 是一个广泛使用的 JavaScript 图表库,可以帮助开发者在 Web 页面上轻松地绘制丰富的图表。在本文中,我们将基于 Highcharts 创建一个用于答题统计的柱状图,并在 Vue.js 中进行集成。我们的目标是通过一个 Vue 组件显示答题正确数和错误数的柱状图,图表会根据外部数据进行动态更新。

1. 项目结构与需求分析

首先,需求是实现一个显示答题统计的柱状图。这个图表将有两个数据系列——正确答案数和错误答案数。每个题型(如单选、多选、判断等)将作为 X 轴的分类,而 Y 轴将表示每个题型的答对和答错的数量。为了满足这些需求,我们将使用 Highcharts 来生成图表,并通过 Vue.js 作为容器,管理和渲染数据。

效果:

2. 创建 Vue 组件

我们将首先创建一个 Vue 组件,该组件通过 chartData 属性接收外部传入的数据。这些数据包含了每个题型的答对和答错的数量。组件的结构包括图表容器以及用于初始化图表的 JavaScript 逻辑。

2.1. template 部分
<template><!-- 图表容器 --><div id="questionAnsweringStatistics"></div>
</template>

template 部分,我们创建了一个简单的容器 div,用来放置生成的图表。Highcharts 会将图表渲染到这个 div 中。

2.2. script 部分
import Highcharts from 'highcharts'

这行代码导入了 Highcharts 库,它是用来绘制图表的核心库。这里我们通过 import 语法导入 Highcharts,以便在组件中使用。

2.3. props 定义部分
props: {chartData: {type: Array,default: () => [ // 定义些一些假数据,展示使用{questionType: "1",rightNums: [1, 0, 0],nums: [3, 0, 0]},{questionType: "2",rightNums: [2, 0, 0],nums: [4, 0, 0]},{questionType: "3",rightNums: [0, 1, 0],nums: [0, 2, 0]},{questionType: "4",rightNums: [0, 2, 0],nums: [0, 2, 0]},{questionType: "5",rightNums: [0, 1, 0],nums: [0, 1, 0]},{questionType: "6",rightNums: [0, 0, 0],nums: [2, 0, 1]}]}
}
  • props 用来接收父组件传递的数据,这里的 chartData 是一个数组,包含题目类型的统计数据(rightNums 和 nums)。
  • chartData 是一个必须传递的数组,它包含了题目类型的统计信息。这样可以灵活地将不同的数据传递给图表组件进行动态渲染。
  • default 设置了默认值,以便便展示,一般设为空数组。如果父组件没有传递 chartData,则会使用这个默认数据来渲染图表。此数据格式与实际应用中的结构一致:rightNums 表示答对的题目数,nums 表示总题目数。
2.4. watch 监听 chartData 变化:
watch: {chartData: {handler(newVal) {newVal && this.initChart(newVal); // 数据变化时重新初始化图表},deep: true}
}
  • watch 用来监听 chartData 的变化,确保当父组件传递的数据发生变化时,我们能及时更新图表。
  • handler(newVal) 是一个回调函数,每当 chartData 更新时,它会被调用并传入新值 newVal,然后重新调用 initChart 渲染图表。
  • deep: true 是为了确保能够检测到对象内部属性的变化,防止 chartData 中的嵌套数据发生改变时无法触发更新。
2.5. mounted 生命周期钩子:
mounted() {this.chartData && this.initChart(this.chartData); // 组件挂载时初始化图表
}
  • 在 mounted 中,我们检查是否存在 chartData(即数据是否已传递到组件),如果存在则调用 initChart 方法初始化图表。
  • initChart 方法会将 chartData 数据传递进去,渲染图表。
2.6. processData 数据处理方法:
processData(data) {let name = [], error = [], success = []; // 题目类型,错误数,正确数data.forEach(item => {const totalQuestions = item.nums.reduce((pre, cur) => pre + cur, 0); // 总问题数if (totalQuestions > 0) {name.push(this.questionTypeFilter(item.questionType));  // 转换题目类型error.push(totalQuestions - item.rightNums.reduce((pre, cur) => pre + cur, 0)); // 计算错误数success.push(item.rightNums.reduce((pre, cur) => pre + cur, 0)); // 计算正确数}});return { name, error, success }; // 返回处理后的数据
}
  • processData 是数据预处理的核心函数。它对 chartData 中的每个数据项进行处理,提取出图表需要的数据。
  • name: 存储每个题型的名称(如“单选题”、“判断题”等)。这个名称来自 questionTypeFilter 方法的转换。
  • error 和 success: 分别存储每个题型的错误数和正确数。通过对 rightNums 和 nums 数组的累加计算得出。
  • reduce 是用来对数组求和的常用方法,这里通过它来计算每个题型的总数和正确数量。
  • 最终返回一个对象,包含 nameerrorsuccess,这三项数据是后续 Highcharts 渲染的基础。
2.7. questionTypeFilter 方法:
questionTypeFilter(num) {const typeMap = {'1': '单选','2': '多选','3': '判断','4': '阅文解答','5': '问答题','6': '填空题',};return typeMap[String(num)] || '未知类型'; // 默认为未知类型
}
  • questionTypeFilter 方法用于将题型编号转换为题型名称(例如,“1” 转换为 “单选”)。
  • typeMap 是一个映射对象,将题型编号与其对应的名称进行映射。
  • String(num) 将传入的 num 转为字符串类型,因为 typeMap 的键是字符串类型的。
  • 如果传入的题型编号没有匹配到 typeMap 中的任何键,则返回 '未知类型'
2.8. initChart 图表初始化:
initChart(data) {const { name, error, success } = this.processData(data); // 获取处理后的数据if (this.chart) {this.chart.destroy(); // 销毁旧的图表实例}const chartOptions = {chart: {type: 'column', // 设置柱状图类型backgroundColor: 'transparent', // 背景透明height: 380, // 图表高度},title: {text: '答题正确数', // 图表标题align: 'left',y: this.fontSize * 0.8, // 微调标题位置style: {fontSize: `${this.fontSize * 0.8}px`,fontWeight: 'bold', // 标题加粗},},xAxis: {categories: name, // X轴显示题目类型tickWidth: 0,lineColor: '#999', // 设置X轴线条颜色labels: {style: {fontSize: `${this.fontSize * 0.6}px`, // 设置X轴标签字体大小},},},yAxis: {min: 0, // Y轴从0开始title: { enabled: false }, // 关闭Y轴标题gridLineColor: '#999', // 设置网格线颜色},legend: {align: 'right',verticalAlign: 'top',floating: true, // 图例浮动itemStyle: {fontSize: `${this.fontSize * 0.6}px`, // 设置图例字体大小},},plotOptions: {column: {cursor: 'pointer', // 鼠标悬浮显示小手stacking: 'normal', // 堆叠柱状图dataLabels: {enabled: true, // 启用数据标签style: {textOutline: 'none', // 去掉文字外框fontSize: `${this.fontSize * 0.6}px`, // 设置数据标签字体大小},},},},series: [{name: '错误',color: 'rgb(247, 163, 92)', // 错误答案的颜色data: error, // 错误数据},{name: '正确',color: 'rgb(124, 181, 236)', // 正确答案的颜色data: success, // 正确数据},],credits: { enabled: false }, // 禁用版权信息exporting: { enabled: false }, // 禁用导出功能};this.chart = Highcharts.chart('questionAnsweringStatistics', chartOptions); // 渲染图表
}
  • initChart 方法用于初始化并渲染 Highcharts 图表。图表的配置项被详细定义在 chartOptions 中。
  • 首先,通过 this.processData(data) 获取处理后的数据,包括题目类型名称、正确数和错误数。
  • 如果已有图表实例(this.chart)存在,先销毁旧的图表实例,避免在页面中存在多个图表实例。
  • 图表配置项(chartOptions)包括了:
    • type: 'column':指定图表类型为柱状图。
    • title:设置图表标题及样式。
    • xAxis:设置 X 轴,显示题型名称(name)。
    • yAxis:设置 Y 轴,显示正确数和错误数。
    • legend:设置图例(正确、错误),以及图例样式。
    • series:设置数据系列,这里定义了两组数据:错误 和 正确,分别对应 error 和 success 数组。
  • 最后,通过 Highcharts.chart() 方法将配置项应用到图表,并渲染到页面中的 #questionAnsweringStatistics 容器中。

3. 总结:

代码的核心是通过 Highcharts 渲染动态柱状图,关键部分包括:

  • 数据预处理processData)和 题型转换questionTypeFilter),确保传递给图表的数据格式正确。
  • 图表初始化initChart),通过 Highcharts 配置项精细控制图表样式和显示效果。
  • 数据更新处理watch 和 mounted),确保当数据发生变化时,图表能及时更新。

如果有任何问题或改进建议,欢迎在评论区留言! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/896064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java Web开发实战与项目——Spring Boot与Redis实现缓存管理

缓存技术在现代Web开发中至关重要&#xff0c;尤其是在高并发的环境中&#xff0c;缓存能够有效减少数据库访问压力、提高系统性能。Redis作为最流行的内存数据存储系统之一&#xff0c;常用于缓存管理。本节将讲解如何在Spring Boot项目中集成Redis&#xff0c;实现缓存管理&a…

C语言学习【1】C语言关于寄存器的封装

目录 1.封装寄存的C语言的语法volatile&#xff1a;unsigned int:*pGpiobOdrvolatile unsigned int * 2.进一步C语言的封装 在嵌入式中&#xff0c;底层一定是操作寄存器&#xff0c;我有一个理念&#xff0c;凡事一定要想清楚&#xff0c;把任何知识点融入自己的理解之中&…

#渗透测试#批量漏洞挖掘#畅捷通T+远程命令执行漏洞

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 一、漏洞概况 二、攻击特征 三、应急处置…

ARM Linux平台下 OpenCV Camera 实验

一、硬件原理 1. OV2640 1.1 基本功能 OV2640 是一款低功耗、高性能的图像传感器&#xff0c;支持以下功能&#xff1a; 最高分辨率&#xff1a;200 万像素&#xff08;1600x1200&#xff09;。 输出格式&#xff1a;JPEG、YUV、RGB。 内置图像处理功能&#xff1a;自动曝…

【Gin】2:快速上手Gin框架(模版、cookie、session)

本文目录 一、模版渲染二、自定义模版函数三、cookie四、Session五、cookie、session区别六、会话攻击 一、模版渲染 在 Gin 框架中&#xff0c;模板主要用于动态生成 HTML 页面&#xff0c;结合 Go 语言的模板引擎功能&#xff0c;实现数据与视图的分离。 模板渲染是一种动态…

【AI绘画】大卫• 霍克尼风格——自然的魔法(一丹一世界)

大卫• 霍克尼&#xff0c;很喜欢这个老头&#xff0c;“艺术是一场战斗”。老先生零九年有了iphone&#xff0c;开始用iphone画画&#xff0c;一零年开始用ipad画画&#xff0c;用指头划拉&#xff0c;据说五分钟就能画一幅&#xff0c;每天早上随手画几幅送给身边的朋友。很c…

解码 NLP:从萌芽到蓬勃的技术蜕变之旅

内容概况&#xff1a; 主要讲述NLP专栏的内容和NLP的发展及其在现代生活中的广泛应用。专栏强调实践为主、理论为辅的学习方法&#xff0c;并通过多个生活场景展示了NLP技术的实际应用&#xff0c;如对话机器人、搜索引擎、翻译软件、电商推荐和智能客服等。 这边我就不多做自我…

解决DeepSeek服务器繁忙问题的实用指南

目录 简述 1. 关于服务器繁忙 1.1 服务器负载与资源限制 1.2 会话管理与连接机制 1.3 客户端配置与网络问题 2. 关于DeepSeek服务的备用选项 2.1 纳米AI搜索 2.2 硅基流动 2.3 秘塔AI搜索 2.4 字节跳动火山引擎 2.5 百度云千帆 2.6 英伟达NIM 2.7 Groq 2.8 Firew…

AI Agent Service Toolkit:一站式大模型智能体开发套件

项目简介 该工具包基于LangGraph、FastAPI和Streamlit构建,提供了构建和运行大模型Agent的最小原子能力,包含LangGraph代理、FastAPI服务、用于与服务交互的客户端以及一个使用客户端提供聊天界面的Streamlit应用。用户可以利用该工具包提供的模板快速搭建基于LangGraph框架…

论文概览 |《Urban Analytics and City Science》2023.10 Vol.50 Issue.8

本次给大家整理的是《Environment and Planning B: Urban Analytics and City Science》杂志2023年10月第50卷第8期的论文的题目和摘要&#xff0c;一共包括21篇SCI论文&#xff01; 论文1 Advances in geospatial approaches to transport networks and sustainable mobility …

大语言模型推理能力从何而来?

前言 DeepSeek R1采用强化学习进行后训练&#xff0c;通过奖励机制和规则引导模型生成结构化思维链&#xff08;CoT&#xff09;&#xff0c;从而显著提升了推理能力。这一创新方法使得DeepSeek R1能够在无需大量监督数据的情况下&#xff0c;通过自我进化发展出强大的推理能力…

STM32MP157A单片机移植Linux驱动深入版

需求整理 在Linux设备树中新增leds节点&#xff0c;其有3个gpio属性&#xff0c;分别表示PE10对应led1&#xff0c;PF10对应led2&#xff0c;PE8对应led3&#xff0c;设备树键值对如下&#xff1a; leds { led1-gpio <&gpioe 10 0>; led2-gpio &l…

http代理IP怎么实现?如何解决代理IP访问不了问题?

HTTP代理是一种网络服务&#xff0c;它充当客户端和目标服务器之间的中介。当客户端发送请求时&#xff0c;请求首先发送到代理服务器&#xff0c;然后由代理服务器转发到目标服务器。同样&#xff0c;目标服务器的响应也会先发送到代理服务器&#xff0c;再由代理服务器返回给…

Grok 3.0 Beta 版大语言模型评测

2025年2月17日至18日&#xff0c;全球首富埃隆马斯克&#xff08;Elon Musk&#xff09;携手其人工智能公司xAI&#xff0c;在美国重磅发布了Grok 3.0 Beta版。这款被誉为“迄今为止世界上最智能的语言模型”的AI&#xff0c;不仅集成了先进的“DeepSearch”搜索功能&#xff0…

基于COSTAR模型的内容创作:如何用框架提升写作质量

目录 前言1. Context&#xff08;上下文&#xff09;&#xff1a;理解背景&#xff0c;奠定写作基础1.1 何为上下文1.2 上下文的作用1.3 案例解析 2. Objective&#xff08;目标&#xff09;&#xff1a;明确写作方向&#xff0c;避免跑题2.1 确立目标2.2 如何设定目标2.3 案例…

Springboot应用开发工具类整理

目录 一、编写目的 二、映射工具类 2.1 依赖 2.2 代码 三、日期格式 3.1 依赖 3.2 代码 四、加密 4.1 代码 五、Http请求 5.1 依赖 5.2 代码 六、金额 6.1?代码 七、二维码 7.1 依赖 7.2 代码 八、坐标转换 8.1 代码 九、树结构 9.1?代码 9.1.1 节点 …

【Research Proposal】基于提示词方法的智能体工具调用研究——研究问题

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;研究问题1. 如何优化提示词方法以提高智能体的工具调用能力&#xff1f;2. 如何解决提示词方法在多模态任务中的挑战&#xff1f;3. 如何通过提示词优化智能体…

Java 大视界 -- 国际竞争与合作:Java 大数据在全球市场的机遇与挑战(94)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

25旅游管理研究生复试面试问题汇总 旅游管理专业知识问题很全! 旅游管理复试全流程攻略 旅游管理考研复试真题汇总

旅游管理复试很难&#xff1f;&#xff01; 别怕&#xff01;经验超丰富的老学姐来给你们出谋划策啦&#xff01; 最近是不是被旅游管理考研复试折磨得够呛&#xff1f;莫慌&#xff01;我这有着丰富复试指导经验的老学姐来帮你们排雷&#xff0c;助力大家顺利上岸&#xff01…

美的楼宇科技基于阿里云 EMR Serverless Spark 构建 LakeHouse 湖仓数据平台

作者&#xff1a;美的楼宇科技事业部 先行研究中心智能技术部 美的楼宇科技 IoT 数据平台建设背景 美的楼宇科技事业部&#xff08;以下简称楼宇科技&#xff09;是美的集团旗下五大板块之一&#xff0c;产品覆盖多联机组、大型冷水机组、单元机、机房空调、扶梯、直梯、货梯…