Echarts X轴内容过长自动隐藏,鼠标移动上去显示全部

使用echarts图表做页面展示的时候,当X轴内容过长时,之前一直用的 '\n'  换行(将字符串根据需要分成两行来展示),这样有很大的局限性(如内容过长的话 分成两行也放不下,而且也会影响美观),后来发现可以通过设置自动隐藏,鼠标移动上去显示全部名称的方法 来做,效果会更好。

1. 首先在 x轴上添加 triggerEvent: true。如下红色部分:

xAxis: {
    data: result.nameList,
    silent: false,
    triggerEvent: true,
    axisLine: {
        onZero: true,
        show: true,
        lineStyle: {
            color: '#90979c' // x 轴线最下面的横坐标线的颜色
        }
    },
    splitLine: {show: false},
    splitArea: {show: false},
    axisLabel: {
        interval: 0,//设置横坐标为斜
        rotate: 30,//文字倾斜角度
        formatter: function (value) {
            if (value.length > 10) {
                value = value.substring(0, 9) + "..";
            }
            return value;
        },
        textStyle: {
            color: '#666',
            fontSize: '12'
        }
    },
},

2. 自定义x轴上显示的内容长度。如上面代码段中的蓝色部分。

3. 自定义一个 鼠标悬浮事件方法,并调用。

function extensionOne(myChart) {
    var id = document.getElementById("extensionOne");
    //判断是否创建过div框,如果没有创建过,则创建。(创建时,默认隐藏)
    if (!id) {
        var div = "<div id = 'extensionOne' sytle=\"display:none\"></div>";
        $('html').append(div);
    }

    var arrow_left = '20px';
    //鼠标悬浮事件
    myChart.on('mouseover', function (params) {
        if (params.componentType != "xAxis") {
            return;
        }

        //设置div框样式,并为其填充值。
        $('#extensionOne').css({
            "position": "absolute",
            "color": "#90979c",
            // "border": "solid 0px white",
            "font-family": "Arial",
            "font-size": "14px",
            "padding": "5px",
            "display": "inline"
        }).text(params.value);
        var xx_text = params.event.offsetX - 35;
        arrow_left = xx_text;

        $("#talentDemandDistribution").mousemove(function (event) {
            // console.log("X轴坐标:" + event.pageX + " Y轴坐标:" + event.pageY);
            var xx = event.pageX - 30;
            var yy = event.pageY + 10;
            $('#extensionOne').css('top', yy).css('left', xx);
        });
    });

    myChart.on('mouseout', function (params) {
        $('#extensionOne').css('display', 'none');
    });
}
{
   ...
   ...
   var chart = echarts.init(document.getElementById('talentDemandDistribution'));
   chart.setOption(option);

   //在echarts 初始化完成后,调用自定义的鼠标悬浮事件方法
   extensionOne(chart);
}

到此结束!

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用Echarts实现鼠标移动划线的方法: 1. 首先需要在HTML文件中引入Echarts的JS文件和CSS文件。 2. 在HTML文件中创建一个div元素,用于显示Echarts图表。 3. 在JS文件中定义一个变量来存储Echarts实例,并使用echarts.init()方法初始化。 4. 定义一个变量来存储划线的起点和终点坐标。 5. 使用Echarts的option配置项来配置图表,包括x、y、网格线等。 6. 在鼠标按下事件中获取起点坐标,并在鼠标移动事件中获取终点坐标,并将起点和终点坐标存储到之前定义的变量中。 7. 在鼠标放开事件中,使用Echarts的addMarkLine()方法来添加一条划线,划线的起点和终点坐标即为之前存储的坐标。 8. 最后使用Echarts的setOption()方法来更新图表。 以下是示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Echarts Demo</title> <script src="https://cdn.jsdelivr.net/npm/echarts@5.2.1/dist/echarts.min.js"></script> <style> #chart { width: 600px; height: 400px; } </style> </head> <body> <div id="chart"></div> <script> var chart = echarts.init(document.getElementById('chart')); var startPoint = null; var endPoint = null; chart.setOption({ xAxis: { type: 'value', splitLine: { show: true } }, yAxis: { type: 'value', splitLine: { show: true } }, series: [{ type: 'line', markLine: { silent: true, data: [] } }] }); chart.on('mousedown', function (params) { startPoint = { x: params.event.offsetX, y: params.event.offsetY }; }); chart.on('mousemove', function (params) { if (startPoint) { endPoint = { x: params.event.offsetX, y: params.event.offsetY }; } }); chart.on('mouseup', function (params) { if (startPoint && endPoint) { chart.setOption({ series: [{ markLine: { data: [{ coord: [startPoint.x, startPoint.y] }, { coord: [endPoint.x, endPoint.y] }] } }] }); startPoint = null; endPoint = null; } }); </script> </body> </html> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值