应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

echarts自定义图表提示框。鼠标指上去显示。echarts tooltip的使用

13936人阅读 2023/1/31 16:41 总访问:5182766 评论:0 收藏:0 手机
分类: 前端

官方文档:
https://echarts.apache.org/zh/option.html#tooltip

使用的是tooltip,如果只是要显示出来,直接设置trigger: ‘axis’即可

  1. const option = {
  2. color: ['#409EFF'],
  3. tooltip: {
  4. trigger: 'axis' // 触发类型:坐标轴触发
  5. },
  6. ....

效果如下:

默认的就是把横纵坐标的值显示出来

可以使用formatter的字符串模板自定义

  1. tooltip: {
  2. trigger: 'axis',
  3. formatter: '<div>hello</div>'
  4. }

效果如下:

使用formatter回调函数的形式自定义模板自定义

用字符串的方式只适合比较简单的自定义,如果复杂一点的不太好控制,参数也不太好拿,所以使用回调函数更好控制一点,参数这些官方文档还是写得很详细,详细的可以去看官方文档。

如果要实现上面只显示一个hello的效果可以这样:

  1. tooltip: {
  2. trigger: 'axis',
  3. formatter: function(params) {
  4. return 'hello'
  5. }
  6. }

显示横纵坐标信息如下:

  1. tooltip: {
  2. trigger: 'axis',
  3. formatter: function(params) {
  4. console.log(params)
  5. const chartData = params[0]
  6. return `<div>${chartData.name}:${chartData.value}</div>`
  7. }
  8. }

来显示一个稍微复杂一点的效果

实现一个这样的效果:

可以看到有三个数值,所以我们第一步在后台接口返回的时候纵坐标数据就不是一个了,虽然图表需要的纵坐标还是一个,但是我们要返回一些额外的数据,我们先在接口加一点测试数据:

通过在控制台输出formatter函数的params可以看到我们额外携带的参数是在data里边的,value还是只有纵坐标的数值,需要我们可以直接用value来写

有了额外的数值我们就可以在格式化函数中去取出来用了

  1. tooltip: {
  2. trigger: 'axis',
  3. formatter: function(params) {
  4. console.log(params)
  5. const chartData = params[0]
  6. const htmlContent = `<div style='width: 100px;height: 65px;background: rgba(179,216,255,0.3);opacity: 1;border: 1px solid #B3D8FF;'>
  7. <div><span>任务数:</span><span>${chartData.data.taskCount}</span></div>
  8. <div><span>完成数:</span><span>${chartData.data.completeCount}</span></div>
  9. <div><span>完成率:</span><span>${chartData.value}</span></div>
  10. </div>`
  11. return htmlContent
  12. }
  13. }

效果如下:

样式写成class的方式好像不行,所以写成了内联样式

外面有一层白色的,是因为默认有padding以及边框什么的,需要把他干掉
就是padding,borderWidth,borderColor这些属性的设置

  1. tooltip: {
  2. trigger: 'axis',
  3. padding: 0,
  4. borderWidth: 0,
  5. formatter: function(params) {
  6. console.log(params)
  7. const chartData = params[0]
  8. const htmlContent = `<div style='width: 100px;height: 65px;background: rgba(179,216,255,0.3);opacity: 1;border: 1px solid #B3D8FF;'>
  9. <div><span>任务数:</span><span>${chartData.data.taskCount}</span></div>
  10. <div><span>完成数:</span><span>${chartData.data.completeCount}</span></div>
  11. <div><span>完成率:</span><span>${chartData.value}</span></div>
  12. </div>`
  13. return htmlContent
  14. }
  15. }

效果如下:

现在效果越来越接近了

透明度可以在背景颜色设置中通过rgba来设置,类似这样:

  1. backgroundColor: 'rgba(0,0,0,0.5)'

把样式在调一下

  1. tooltip: {
  2. trigger: 'axis',
  3. padding: 0,
  4. borderWidth: 0,
  5. formatter: function(params) {
  6. console.log(params)
  7. const chartData = params[0]
  8. const htmlContent = `<div style='width: 100px;height: 65px;background: rgba(179,216,255,0.3);opacity: 1;border: 1px solid #B3D8FF;border-radius:5%;text-align: left;padding-left: 10px;padding-top:5px;padding-bottom:5px'>
  9. <div style='font-size:12px'><span style='color:#747774'>任务数 :</span><span style='color:#409EFF;margin-left:6px'>${chartData.data.taskCount}</span></div>
  10. <div style='font-size:12px'><span style='color:#747774'>完成数 :</span><span style='color:#409EFF;margin-left:6px'>${chartData.data.completeCount}</span></div>
  11. <div style='font-size:12px'><span style='color:#747774'>完成率 :</span><span style='color:#409EFF;margin-left:6px'>${chartData.value}</span></div>
  12. </div>`
  13. return htmlContent
  14. }
  15. }

效果如下:

已经和设计图比较接近了,先到这里了

数据多一点的效果

  1. tooltip: {
  2. trigger: 'axis',
  3. padding: 0,
  4. borderWidth: 0,
  5. // backgroundColor: 'rgba(0,0,0,0.0)',
  6. formatter: function(params) {
  7. console.log(params)
  8. const chartData = params[0]
  9. const htmlContent = `<div style='width: 110px;height: 128px;background: rgba(179,216,255,0.3);opacity: 1;border: 1px solid #B3D8FF;border-radius:4px;text-align: left;padding-left: 10px;padding-top:5px;padding-bottom:5px'>
  10. <div style='font-size:12px'><span style='color:#747774'>整体实验数 :</span><span style='color:#409EFF;margin-left:6px'>${chartData.data.taskCount}</span></div>
  11. <div style='font-size:12px'><span style='color:#747774'>整体完成数 :</span><span style='color:#409EFF;margin-left:6px'>${chartData.data.completeCount}</span></div>
  12. <div style='font-size:12px'><span style='color:#747774'>必做实验数 :</span><span style='color:#409EFF;margin-left:6px'>${chartData.data.mustDoTaskCount}</span></div>
  13. <div style='font-size:12px'><span style='color:#747774'>必做完成数 :</span><span style='color:#409EFF;margin-left:6px'>${chartData.data.mustDoCompleteCount}</span></div>
  14. <div style='font-size:12px'><span style='color:#747774'>整体完成率 :</span><span style='color:#409EFF;margin-left:6px'>${chartData.data.completPrByStudentTermNum}</span></div>
  15. <div style='font-size:12px'><span style='color:#747774'>必做完成率 :</span><span style='color:#409EFF;margin-left:6px'>${chartData.value}%</span></div>
  16. </div>`
  17. return htmlContent
  18. }
  19. }

效果如下:

实现效果

设计图给的效果如下:

实现方法1,不使用formatter

  1. tooltip: {
  2. trigger: 'axis',
  3. backgroundColor: "rgba(18,103,167,0.9)",
  4. borderColor: "#01DCF3",
  5. textStyle: {
  6. color: "#fff",
  7. fontSize: 12
  8. },
  9. icon: "rect",
  10. symbol: "rect",
  11. axisPointer: {
  12. label: {
  13. // y轴格式化函数官方文档:https://echarts.apache.org/zh/option.html#tooltip.axisPointer.label.formatter
  14. formatter: function (params) {
  15. console.log(params)
  16. return params.value + "月";
  17. }
  18. },
  19. },
  20. // 分别设置四个方向的内边距
  21. padding: [
  22. 6, // 上
  23. 10, // 右
  24. 9, // 下
  25. 10, // 左
  26. ],
  27. //数值格式化函数,好像是5.3版本才开始支持的
  28. valueFormatter: (value) => value + "人次"
  29. },

这样实现除了那个图例是原点,不是长方形的,其他和设计图基本一样了,但是感觉还是没有使用formatter自定义灵活。

实现方法2,使用formatter

  1. tooltip: {
  2. trigger: 'axis',
  3. backgroundColor: "rgba(18,103,167,0.9)",
  4. borderColor: "#01DCF3",
  5. textStyle: {
  6. color: "#fff",
  7. fontSize: 12
  8. },
  9. icon: "rect",
  10. symbol: "rect",
  11. axisPointer: {
  12. label: {
  13. // y轴格式化函数官方文档:https://echarts.apache.org/zh/option.html#tooltip.axisPointer.label.formatter
  14. formatter: function (params) {
  15. console.log(params)
  16. return params.value + "月";
  17. }
  18. },
  19. },
  20. // 分别设置四个方向的内边距
  21. padding: [
  22. 6, // 上
  23. 10, // 右
  24. 9, // 下
  25. 10, // 左
  26. ],
  27. valueFormatter: (value) => value + "人次",
  28. formatter: function (params) {
  29. var result = ''
  30. var dotHtml = '<span style="display:inline-block;margin-right:5px;margin-top:-5px;width:20px;height:7px;background-color:#F2C52A"></span>' // 定义第一个数据前的长方形颜色
  31. var dotHtml2 = '<span style="display:inline-block;margin-right:5px;margin-top:-5px;width:20px;height:7px;background-color:#23FFFC"></span>' // 定义第二个数据前的长方形颜色
  32. var dotHtml3 = '<span style="display:inline-block;margin-right:5px;margin-top:-5px;width:20px;height:7px;background-color:#1C8DFF"></span>' // 定义第二个数据前的长方形颜色
  33. result += "<div>" + params[0].axisValue + "月" + "</div>" +
  34. "<div style='margin-top:2px'>" + dotHtml + " 累计评估量: <span style='display:inline-block;margin-left:5px;'>" + params[0].data + "人次" + "</div>" +
  35. "<div style='margin-top:3px'>" + dotHtml2 + " 累计实验量: <span style='display:inline-block;margin-left:5px;'>" + params[1].data + "人次" + "</div>" +
  36. "<div style='margin-top:3px'>" + dotHtml3 + " 累计项目数: <span style='display:inline-block;margin-left:5px;'>" + params[2].data + "人次</span>" + "</div>";
  37. return result
  38. }
  39. },

这里x,y轴的数据都是简单的一个值,如果是对象的话,针对性的改变一点取值的方法就可以了,通过对象把需要的值取出来拼装成需要的格式就行了。


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

echarts中tooltip 基本样式问题处理

在echarts中遇到几个样式问题,现总结如下:1、tooltip中样式中 值换行在tooltip中修改加上一句代码formatter:&#39;{b0}:{c...

ionic3实战使用echarts图表(柱状图)

在公司有些东西需要投到大屏幕上去显示,也就是电视显示屏(安卓版的),但是我没普通的html代码并不能打包到上去安装使用...

echarts 显示坐标点echarts 自定义显示坐标点echarts 个性化坐标提升显示,

最简单的显示出来,直接在series中对应的数据项里边设置一下label即可label: { show: true, position: &#39;top&...

echarts修改横纵坐标颜色修改折线图线的宽度

echarts修改横坐标颜色代码主要是这样的 axisLine:{ lineStyle:{ ...

echarts图例legend颜色各不相同,图例legend空心圆

代码如下:legend: { // x:&#39;right&#39;, //可设定图例在左、右、居中 // padding:[0,50,0,0], //...

echarts折线图使用示例包含颜色渐变,节点样式,图例legend样式等

设计图如下 代码如下&lt;!-- 学习趋势图 --&gt; &lt;template&gt; &lt;div class=&quot;learnTrendChartContainer&q...

echarts提示框tooltip属性

tooltip: { show: true, // 是否显示提示框组件 trigger: &#39;axis&#39;, // 触发类型(&#39;item&#39;,...

echarts 仪表盘gauge颜色渐变echarts圆环进度条echarts圆环进度条弧形

效果如下: 配置项代码如下// 基于准备好的dom,初始化echarts实例 const myChart = this.$echarts.init(document.getEl...

echarts 设置x坐标刻度的颜色

是使用axisLabel下面的颜色设置,不是nameTextStyle不要搞混了。nameTextStyle官方解释是坐标轴名称的文字样式,要和坐标轴...

echarts setoption 不重新渲染

Echarts渲染的逻辑如果 echarts 未实例化则进⾏实例化过程,⼀旦实例化,便会在div容器⽣成⼀个 echarts_instance属性,该...

echarts 图表颜色设置,饼图颜色渐变

[TOC]echarts 图表颜色设置在外层加一个color数组就行了 color:[&quot;#1890FF&quot;,&quot;#91CB74&quot;,&quot;#FAC858&...

echarts饼图通过grid设置位置不生效饼图设置位置

grid 记得是平面直角坐标系的意思,而仪表盘、饼图这种,是通过设置中心点位置的方式定位的。所以仪表盘、饼图这种应该这样...

Quartz.NET实例动态改变周期调度misfire、Cron

Quartz:Java编写的开源的任务调度作业框架 类似Timer之类定时执行的功能,但是更强大Quartz.NET:是把Quartz转成C# NuGet...

.NET Windows服务发布、安装、卸载、监听脚本服务调试

一、脚本 为方便不用每次都去写安装卸载的脚本1.安装脚本@echooff @echo开始安装【服务】 %SystemRoot%\Microsoft.NET\Fr...

nginx常用命令nginx启动命令nginx重启命令nginx关闭命令nginx测试配置文件是否正确nginx nginx.pid文件丢失报错

启动命令:start nginx 关闭命令:nginx -s stop nginx -s quit nginx -s stop与nginx -s quit区别 Quit is a graceful shu...