您的位置:

Echarts和Highcharts的区别

一、图表类型

Echarts和Highcharts都支持各种类型的图表,如折线图、柱状图、散点图、雷达图等。

然而,Echarts支持的图表类型更多,如地图、热力图、饼图、漏斗图等。而Highcharts则对部分图表类型支持较少,如地图和3D图表。

以下是一个Echarts自定义饼图的示例:

// 引入 ECharts 主模块
var echarts = require('echarts/lib/echarts');

// 引入饼图模块
require('echarts/lib/chart/pie');

// 引入提示框和标题组件
require('echarts/lib/component/tooltip');
require('echarts/lib/component/title');

// 初始化图表实例
var myChart = echarts.init(document.getElementById('main'));

// 设置饼图的数据和配置项
var option = {
    tooltip: {
        trigger: 'item',
        formatter: '{a} 
{b}: {c} ({d}%)' }, legend: { orient: 'vertical', left: 10, data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎'] }, series: [ { name: '访问来源', type: 'pie', radius: ['50%', '70%'], avoidLabelOverlap: false, label: { show: false, position: 'center' }, emphasis: { label: { show: true, fontSize: '30', fontWeight: 'bold' } }, labelLine: { show: false }, data: [ {value: 335, name: '直接访问'}, {value: 310, name: '邮件营销'}, {value: 234, name: '联盟广告'}, {value: 135, name: '视频广告'}, {value: 1548, name: '搜索引擎'} ] } ] }; // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option);

二、性能

在大数据量的情况下,Echarts比Highcharts更具有优势。因为Echarts的底层使用了Canvas和SVG技术,渲染速度更快。

以下是一个用Echarts和Highcharts绘制10万数据点的折线图的示例,可以看出Echarts的渲染速度更快:

// 引入 ECharts 和 Highcharts
var echarts = require('echarts/lib/echarts');
var Highcharts = require('highcharts');

// 随机生成10万个随机数作为折线图的数据
var data = [];
for (var i = 0; i < 100000; i++) {
    data.push(Math.random());
}

// 使用 Echarts 绘制折线图
var start1 = Date.now();
var myChart1 = echarts.init(document.getElementById('main1'));
var option1 = {
    xAxis: {
        type: 'category',
        data: data.map(function (item, index) {
            return index;
        })
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: data,
        type: 'line'
    }]
};
myChart1.setOption(option1);
console.log('Echarts time:', Date.now() - start1);

// 使用 Highcharts 绘制折线图
var start2 = Date.now();
Highcharts.chart('main2', {
    chart: {
        zoomType: 'x'
    },
    xAxis: {
        type: 'category',
        tickInterval: 10000,
        labels: {
            formatter: function () {
                return this.value / 1000 + 'k';
            }
        }
    },
    yAxis: {
        title: {
            text: 'Value'
        }
    },
    legend: {
        enabled: false
    },
    plotOptions: {
        area: {
            fillColor: {
                linearGradient: {
                    x1: 0,
                    y1: 0,
                    x2: 0,
                    y2: 1
                },
                stops: [
                    [0, Highcharts.getOptions().colors[0]],
                    [1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]
                ]
            },
            marker: {
                radius: 2
            },
            lineWidth: 1,
            states: {
                hover: {
                    lineWidth: 1
                }
            },
            threshold: null
        }
    },
    series: [{
        type: 'area',
        data: data
    }]
});
console.log('Highcharts time:', Date.now() - start2);

三、数据可视化

除了绘制静态的图表外,Echarts和Highcharts还提供了数据可视化的功能。

Echarts可以在地图上显示气泡,以表示不同城市的数据情况;Highcharts可以在柱状图上显示动态的进度条,以表示某一项任务的完成情况。

以下是一个Echarts在地图上显示气泡的示例:

// 引入 ECharts 主模块和地图组件
var echarts = require('echarts/lib/echarts');
require('echarts/lib/chart/map');

// 初始化图表实例
var myChart = echarts.init(document.getElementById('main'));

// 配置地图和气泡的数据
var option = {
    legend: {
        orient: 'vertical',
        left: 'left',
        data:['销量']
    },
    tooltip: {
        trigger: 'item',
        showDelay: 0,
        transitionDuration: 0.2,
        formatter: function (params) {
            var value = (params.value + '').split('.');
            value = value[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, '$1,')
                    + '.' + value[1].substr(0, 2);
            return params.seriesName + '
' + params.name + ': ' + value; } }, visualMap: { min: 0, max: 1000, left: 'left', top: 'bottom', text: ['高','低'], // 文本,默认为数值文本 calculable: true }, series: [ { name: '销量', type: 'map', mapType: 'china', roam: false, itemStyle:{ normal:{ label:{ show:true } }, emphasis:{ label:{ show:true } } }, data:[ {name: '北京', value: Math.round(Math.random()*1000)}, {name: '天津', value: Math.round(Math.random()*1000)}, {name: '上海', value: Math.round(Math.random()*1000)}, {name: '重庆', value: Math.round(Math.random()*1000)}, {name: '河北', value: Math.round(Math.random()*1000)}, {name: '河南', value: Math.round(Math.random()*1000)}, {name: '云南', value: Math.round(Math.random()*1000)}, {name: '辽宁', value: Math.round(Math.random()*1000)}, {name: '黑龙江', value: Math.round(Math.random()*1000)}, {name: '湖南', value: Math.round(Math.random()*1000)}, {name: '安徽', value: Math.round(Math.random()*1000)}, {name: '山东', value: Math.round(Math.random()*1000)}, {name: '新疆', value: Math.round(Math.random()*1000)}, {name: '江苏', value: Math.round(Math.random()*1000)}, {name: '浙江', value: Math.round(Math.random()*1000)}, {name: '江西', value: Math.round(Math.random()*1000)}, {name: '湖北', value: Math.round(Math.random()*1000)}, {name: '广西', value: Math.round(Math.random()*1000)}, {name: '甘肃', value: Math.round(Math.random()*1000)}, {name: '山西', value: Math.round(Math.random()*1000)}, {name: '内蒙古', value: Math.round(Math.random()*1000)}, {name: '陕西', value: Math.round(Math.random()*1000)}, {name: '吉林', value: Math.round(Math.random()*1000)}, {name: '福建', value: Math.round(Math.random()*1000)}, {name: '贵州', value: Math.round(Math.random()*1000)}, {name: '广东', value: Math.round(Math.random()*1000)}, {name: '青海', value: Math.round(Math.random()*1000)}, {name: '西藏', value: Math.round(Math.random()*1000)}, {name: '四川', value: Math.round(Math.random()*1000)}, {name: '宁夏', value: Math.round(Math.random()*1000)}, {name: '海南', value: Math.round(Math.random()*1000)}, {name: '台湾', value: Math.round(Math.random()*1000)}, {name: '香港', value: Math.round(Math.random()*1000)}, {name: '澳门', value: Math.round(Math.random()*1000)} ] } ] }; // 使用刚指定的配置项和数据显示图表。 myChart.setOption(option);

四、主题

Echarts和Highcharts都支持自定义主题,并且都内置了多种主题可供选择。

然而,Echarts比Highcharts更容易自定义主题,因为Echarts的配置项中有专门的theme字段,可以方便地进行主题切换。

以下是一个Echarts自定义主题的示例:

// 引入 ECharts 主模块
var echarts = require('echarts/lib/echarts');

// 引入折线图模块
require('echarts/lib/chart/line');

// 引入主题
require('echarts/theme/macarons');

// 初始化图表实例
var myChart = echarts.init(document.getElementById('main'), 'macarons');

// 设置折线图的数据和配置项
var option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line'
    }]
};

// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);

五、跨平台

对于跨平台的需求, Echarts和Highcharts都提供了基于JavaScript和HTML5的方案,支持PC端和移动端,可以在多种浏览器和设备上使用。

以下是一个Echarts和Highcharts在移动端显示折线图的示例,可以看出两者的显示效果和交互方式略有不同:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
    <title>Echarts vs Highcharts</title>
    <!-- 引入 ECharts 和 Highcharts -->
    <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.1.1/echarts.min.js"></script>
    <script src="https://code.highcharts.com/highcharts.js"></script>
</head>
<body>
    <div id="chart1" style="width: 100%; height: 300px;"></div>
    <script>
        // 使用 ECharts 绘制折线图
        var myChart1 = echarts.init(document.getElementById('chart1'));
        var option1 = {
            xAxis: {
                type: 'category',
                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
            },
            yAxis: {
                type: 'value'
            },
            series: [{
                data: [820, 932, 901, 934, 1290, 1330, 1320],
                type: 'line'
            }]
        };
        myChart1.set            
echarts和highcharts的区别

2023-05-19
Echarts和Highcharts的区别

2023-05-22
java方法整理笔记(java总结)

2022-11-08
印象笔记记录java学习(Java成长笔记)

2022-11-12
chartjs和highcharts,chartjs文档

本文目录一览: 1、有哪些用 JavaScript 实现的图形库 2、一般用哪些工具做大数据可视化分析? 3、chart.js插件折线图怎么设置路径线条的粗细 4、Echart,GoogleChart

2023-12-08
java学习笔记(java初学笔记)

2022-11-14
java笔记,大学java笔记

2022-11-28
关于chartjsk线图的信息

本文目录一览: 1、如何用highCharts绘制动态股票K线图 2、echarts 怎样用js自定义图表数据 3、如何看懂k线图?(最好有图解) 4、Open Flash Chart K线图求教 5

2023-12-08
java笔记,尚硅谷java笔记

2022-12-01
显示等待和隐式等待的区别

2023-05-20
发篇java复习笔记(java课程笔记)

2022-11-09
python基础学习整理笔记,Python课堂笔记

2022-11-21
IDEAIC和IDEAIU的区别

2023-05-18
js代码实现折线图,折线图的代码

本文目录一览: 1、如何用JavaScript获取WebViewString并用ECharts的库绘制折线图? 2、使用js绘图(折线图,柱状图,饼状图),若同时制作多张图,速度比较慢,如何解决 3、

2023-12-08
我的python笔记06(Python)

2022-11-14
Mac笔记:在日常生活中高效实用的笔记工具

2023-05-18
关于php使用highcharts的信息

2022-11-24
前端图表插件的全面解析

2023-05-17
数据库的笔记mysql,数据库管理系统笔记

2022-11-24
java客户端学习笔记(java开发笔记)

2022-11-14