highcharts tooltip分列以及x轴某类的合计

本文详细介绍了如何在Highcharts图表中自定义Tooltip,实现数据分列展示并显示x轴某类的合计。通过设置`formatter`函数,过滤并格式化数据,创建一个表格结构,同时计算并展示合计值。内容包括如何处理数据、设置样式以及避免零值数据的显示。

下面代码是tooltip分列以及x轴某类的合计。图片是formatter函数中的this所指内容,x是x轴某类,points是这个类有多少种,每个里面是一个对象,包含颜色数值等

tooltip: {
            shared: true,
            useHTML: true,
            formatter: function(){
            // 这是将数据进行分列,去掉数据为0的数据以及合计
              let tmp = '';
              // let length = this.points.length;//数据条数,this.points获取的是当前x轴刻度上的数据信息
              // 先是获取不为0的数据
              let pointList = this.points.filter(i => i.y > 0)
              let length = pointList.length
              let rowCount = 10;//一列允许的最大行数
              // 判断有多少列
              let lineCount = parseInt(length / rowCount) + 1;//列数
             // 将鼠标悬浮的数据进行汇总,即合计
              let sum = 0
              pointList.map(i => {
                sum += i.y
              })
              // 写在最上面的合计。也可以this.x加合计
              tmp += '<span style="font-size:10px">合计:'+sum+'个</span><table><table>';
             // 竖着排序。显示的时候是0和10在一行,分为两列
              for (let i = 0; i < rowCount; i++) {
                tmp += "<tr>";
                for (let j = 0; j < lineCount && j * rowCount + i  < length; j++) {
                  let it = pointList[j * rowCount + i];
                    tmp += "<td style='padding-right: 17px;'><span style='color:" + it.color + "'>● " + it.series.name + ":</span><span style='font-weight: bold'>" + it.y + "个</span></td>";
                }
                tmp += '</tr>';
              }
              tmp += '</table>';
              return tmp;
            },
          },

// head + 每个 point + footer 拼接成完整的 table;这是一个简单的显示x轴某一项的所有数据(分开显示);headerFormat、pointFormat只能跟字符串;pointFormat有回调函数,其代表的this只能是x上的一种不能求合计
            // headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
            // pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
            // '<td style="padding:0"><b>{point.y} 个</b></td></tr>',
            // footerFormat: '</table>',

在这里插入图片描述

参考文章
https://www.cnblogs.com/liumaowu/p/12206082.html

### Highcharts甘特图 X 默认单行显示问题解决方案 在使用 Highcharts 的甘特图时,如果发现 X 仅显示一行标签而无法满足需求,则可以通过调整配置项来优化这一行为。以下是具体的解决方法: #### 配置 `xAxis` 属性 通过设置 `xAxis.labels.step` 和其他相关属性可以控制 X 标签的行为。例如,允许更多标签显示或者自定义旋转角度以便更好地适应布局。 ```javascript Highcharts.ganttChart('container', { xAxis: { labels: { step: 1, // 控制每隔多少个刻度显示一次标签,默认可能隐藏部分标签 rotation: -45 // 设置标签倾斜角度以节省空间 } }, series: [{ name: 'Project 1', data: [{ start: Date.UTC(2023, 9, 1), end: Date.UTC(2023, 9, 5), name: 'Task A' }, { start: Date.UTC(2023, 9, 6), end: Date.UTC(2023, 9, 8), name: 'Task B' }] }] }); ``` 上述代码片段中设置了 `step` 参数为 `1`,表示每个刻度都应显示对应的标签[^1]。同时,通过指定 `rotation` 值可以让标签沿一定角度排列,从而减少重叠的可能性。 #### 动态调整样式 除了静态配置外,还可以利用事件监听器动态修改 X 的表现形式。比如,在图表加载完成后重新渲染线上的文字内容。 ```javascript chart: { events: { load() { const chart = this; setTimeout(() => { // 模拟异步操作后的更新过程 chart.xAxis[0].update({ labels: { style: { fontSize: '10px' // 减小字体大小提高紧凑程度 } } }); }, 1000); } } } ``` 此段脚本展示了如何借助 `setTimeout()` 方法延迟执行某些逻辑,并最终调用 `update()` 来刷新目标组件的状态。 #### 探索替代工具 尽管 Highcharts 提供了强大的功能集用于构建复杂的甘特图,但在特定场景下仍可能存在局限性。此时不妨考虑引入其他第三方库作为补充选项。例如 AnyChart 或 Google Charts 等均具备良好的交互体验以及灵活定制能力[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值