首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单击电子图表条形图时突出显示条形图?

如何在单击电子图表条形图时突出显示条形图?
EN

Stack Overflow用户
提问于 2018-06-01 17:26:32
回答 2查看 4.2K关注 0票数 4

我已经使用echarts库创建了一个条形图。如何在用户单击条形图时突出显示条形图,或者在单击条形图时应用条形图边框?

有没有办法在触发条的单击事件时突出显示条?

EN

回答 2

Stack Overflow用户

发布于 2018-07-31 18:53:43

是的,有一种方法可以在单击时突出显示条形图。

当点击事件被触发时,你可以从参数中得到被点击的确切数据(单条),然后你只需要改变这个数据的颜色(例如,减少alpha)就可以达到‘高亮’的目的。

同时不要忘记恢复其他数据的颜色(不是点击)。

检查此demo

代码语言:javascript
复制
let echartsObj = echarts.init(document.querySelector('#canvas'));


option = {


    grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
    },
    xAxis: [{
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],

    }],
    yAxis: [{
        type: 'value'
    }],
    series: [{
        name: '直接访问',
        type: 'bar',
        barWidth: '60%',
        data: [{
            value: 10,
            itemStyle: {
                color: 'hsl(200,60%,45%)'
            }
        }, {
            value: 52,
            itemStyle: {
                color: 'hsl(200,60%,45%)'
            }
        }, {
            value: 200,
            itemStyle: {
                color: 'hsl(60,60%,45%)'
            }
        }, {
            value: 334,
            itemStyle: {
                color: 'hsl(150,60%,45%)'
            }
        }, {
            value: 390,
            itemStyle: {
                color: 'hsl(220,60%,45%)'
            }
        }, {
            value: 330,
            itemStyle: {
                color: 'hsl(200,60%,45%)'
            }
        }, {
            value: 220,
            itemStyle: {
                color: 'hsl(150,60%,45%)'
            }
        }]
    }]
};

echartsObj.setOption(option)

echartsObj.on('click', function(params) {
    console.log(params)
    option.series[0].data.forEach((data, index) => {
        if (index === params.dataIndex) {
            if (!data.isChecked) {
                data.itemStyle.color = getHighLightColor(data.itemStyle.color);
                data.isChecked = true;
            }
        } else {
            if (data.isChecked) {
                data.itemStyle.color = getOrigColor(data.itemStyle.color);
                data.isChecked = false;
            }

        }
    })
    echartsObj.setOption(option)
});


function getHighLightColor(color) {
    return color.replace(/(\d+)%\)/, (...args) => {
        return 20 + Number(args[1]) + '%)'
    });
}


function getOrigColor(highlightColor) {
    return highlightColor.replace(/(\d+)%\)/, (...args) => {
        return Number(args[1]) - 20 + '%)'
    });
}
代码语言:javascript
复制
    <html>
      <header>
        <script src="https://cdn.bootcss.com/echarts/4.1.0.rc2/echarts-en.min.js"></script>
      </header>
      <body>
      <div id="canvas" style="width: 100%; height: 200px">

</div>
      </body>
    </html>

票数 4
EN

Stack Overflow用户

发布于 2020-03-17 11:08:17

可以像这样突出显示:

代码语言:javascript
复制
chart.on('click', (params) => {
  chart.dispatchAction({
    type: 'highlight',
    seriesIndex: params.seriesIndex,
    dataIndex: params.dataIndex
  })
})

可以使用emphasis.itemStyle设置突出显示样式

该文档可在以下位置找到:https://echarts.apache.org/en/api.html#action.highlight

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50640221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档