Chart.js与ECharts.js图表组件对比与使用

Chart.js与ECharts.js图表组件对比与使用

常用的 图表组件 Chart.js与ECharts.js的简要介绍与使用。

Chart.js

Chart.js官方网址。里面包括文档、例子和GitHub代码。界面小清新很漂亮。
Chart.js官网漂亮的界面
例子很全。各种图表都有。点进去还可以修改数据条数、数据长度等等。
Chart.js官方例子

ECharts.js

ECharts.js官方网址。EChart.js是Apache出的图标组件库。与Chart.js相比,Echarts.js动态效果更优秀一些。界面看起来就更“上档次”。支持中英文切换,亲民。
ECharts.js官方界面
例子界面,更全面更直观。每个例子点进去代码直接展示在左侧,图表结果展示在右侧,非常直观。
Echarts.js例子界面

Chart.js与ECharts.js的区别之“画布”

Chart.js

Chart.js的展示部分需要使用canvas标签,再通过id来绑定script代码部分。

<div style=" width: 100%;display: flex;align-items: center;justify-content: center;">
	<div style="width: 70%;">
		<canvas id="myChart1"></canvas> 
	</div>
</div>
ECharts.js

ECharts.js的展示部分直接使用div标签即可,注意必须规定画布的大小,再通过id来绑定script代码部分。

<div style=" width: 100%;display: flex;align-items: center;justify-content: center;">
	<div style="width: 70%;height: 500px;" id="myChart1"></div>
</div>

Chart.js与ECharts.js的区别之“语法”

具体语法代码写在script标签里面。画布中的id对应document.getElementById('myChart1');里的id。

Chart.js线形图

Chart.js声明方式为:var chart = new Chart(ctx, option)

<script type="text/javascript">
            var ctx = document.getElementById('myChart1').getContext('2d');
            var chart = new Chart(ctx, {
                // The type of chart we want to create
                type: 'line',
                // The data for our dataset
                data: {
                    labels: ["201712", "201801", "201802", "201803", "201804", "201805", "201806",
                        "201807", "201808", "201809", "201810", "201811", "201812", "201901", "201902",
                        "201903", "201904", "201905", "201906", "201907", "201908", "201909", "201910",
                        "201911"
                    ],
                    datasets: [{
                            label: "综合评级",
                            fill: false, //是否填充,不填充就显示线。
                            backgroundColor: "rgba(242,190,64,1)", //线的颜色
                            borderColor: "rgba(242,190,64,1)",
                            pointBackgroundColor: "rgba(255,255,255,1)", //数据点的颜色
                            pointStrokeColor: "rgba(242,190,64,1)",
                            data: [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],

                        },
                        {
                            label: "食品安全评级",
                            fill: false,
                            backgroundColor: "rgba(159,190,223,1)",
                            borderColor: "rgba(159,190,223,1)",
                            pointBackgroundColor: "rgba(255,255,255,1)",
                            pointStrokeColor: "rgba(159,190,223,1)",

                            data: [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4],
                        }
                    ]
                },

                // Configuration options go here
                options: {
                    customXLabelRota: 90,//x轴的标注倾斜展示
                    customXLabelRotaMinNumber: 90,//x轴的标注倾斜展示
                    scaleShowGridLines: false,
                    pointDot: true,
                    legend: {
                        labels: {
                            usePointStyle: true,//图例的样式使用点的样式
                        }
                    },
                    scales: {
                        yAxes: [{ //y轴
                            ticks: {
                                beginAtZero: true, //y轴从0开始
                                min: 0, //y轴最小值
                                max: 15, //y轴最大值
                                stepSize: 3 //y轴尺度跨度
                            }
                        }],
                        xAxes: [{
                            ticks: {}
                        }]
                    },

                }
            });
        </script>

Chart.js线形图

ECharts.js线形图

ECharts.js声明方式为:var myChart = echarts.init(document.getElementById('myChart1'));

<script type="text/javascript">
            var myChart = echarts.init(document.getElementById('myChart1'));
            option = {
                legend: {
                    data: ['综合评级', '食品安全评级']
                },
                tooltip: {
                    trigger: 'axis', //鼠标覆盖出现辅助标线
                },
                grid: { //防止标签溢出
                    left: '3%',
                    right: '4%',
                    bottom: '3%',
                    containLabel: true
                },
                xAxis: {
                    type: 'category',
                    data: ["201712", "201801", "201802", "201803", "201804", "201805", "201806",
                        "201807", "201808", "201809", "201810", "201811", "201812", "201901", "201902",
                        "201903", "201904", "201905", "201906", "201907", "201908", "201909", "201910",
                        "201911"
                    ],
                    axisLabel: { //轴值倾斜展示
                        interval: 0,
                        rotate: 40
                    },
                },
                yAxis: {
                    type: 'value',
                    max: 15,
                },
                series: [{
                        name: '综合评级',
                        type: 'line',
                        // stack: '总量',

                        data: [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
                        // 显示数值
                        itemStyle: {
                            normal: {
                                color: "rgba(242,190,64,1)", //设置线条颜色
                                label: {
                                    show: true
                                }
                            }
                        },
                    },
                    {
                        name: '食品安全评级',
                        type: 'line',
                        // stack: '总量',
                        data: [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4],
                        // 显示数值
                        itemStyle: {
                            normal: {
                                color: "rgba(159,190,223,1)", //设置线条颜色
                                label: {
                                    show: true
                                }
                            }
                        },
                    }
                ]
            };
            myChart.setOption(option);//不写就画不出来哦
        </script>

ECharts.js线形图
对比可以发现Chart.js是将dataset和option分开配置的,Echarts.js是将所有的配置、数据都写在option里面。

Chart.js雷达图
 <script type="text/javascript">
            var ctx2 = document.getElementById('myChart1').getContext('2d');
            var chart2 = new Chart(ctx2, {
                // The type of chart we want to create
                type: 'radar',
                // The data for our dataset
                data: {
                    labels: ["物理", "魔法", "魔抗", "护甲", "速度", "操作难度"],
                    datasets: [{
                        label: false,
                        fill: false,
                        backgroundColor: "rgba(174,29,0,1)",
                        borderColor: "rgba(174,29,0,1)",
                        borderWidth: 1,
                        pointBackgroundColor: "rgba(255,255,255,1)",
                        pointBorderColor: "rgba(174,29,0,1)",
                        pointDotStrokeWidth: 0.5,
                        pointRadius: 1.5,
                        backgroundColor: [
                            'rgba(255, 255, 255, 1)',
                            'rgba(238, 238, 238, 1)',
                            'rgba(255, 255, 255, 1)',
                            'rgba(238, 238, 238, 1)',

                        ],
                        data: [2.9, 4.8, 4.8, 4.8, 4.8, 4.5],

                    }]
                },

                // Configuration options go here
                options: {
                    legend: { //图例
                        display: false
                    },
                    scale: {
                        gridLines: { //网格
                            color: "#bbb",
                        },
                        ticks: { //刻度
                            display: false, //不展示轴尺度标记
                            beginAtZero: true,
                            suggestedMin: 0,
                            suggestedMax: 5,
                            stepSize: 1, //网格线间距步长
                        },
                    }
                }
            });
        </script>

Chart.js雷达图

ECharts.js雷达图
<script type="text/javascript">
            var myChart1 = echarts.init(document.getElementById('myChart1'));
            option = {
                title: {},
                tooltip: {},
                radar: {
                    // shape: 'circle',
                    name: {
                        textStyle: {
                            color: '#fff',
                            backgroundColor: '#999',
                            borderRadius: 3,
                            padding: [3, 5]
                        }
                    },
                    indicator: [{
                            name: '物理',
                            max: 5
                        },
                        {
                            name: '魔法',
                            max: 5
                        },
                        {
                            name: '魔抗',
                            max: 5
                        },
                        {
                            name: '护甲',
                            max: 5
                        },
                        {
                            name: '速度',
                            max: 5
                        },
                        {
                            name: '操作难度',
                            max: 5
                        }
                    ]
                },
                series: [{
                    type: 'radar',
                    // areaStyle: {normal: {}},
                    data: [{
                        value: [2.9, 4.8, 4.8, 4.8, 4.8, 4.5],
                        name: '大怪兽'//选择点的时候展示所有数据值和标题
                    }]
                }],

            };
            myChart1.setOption(option);
        </script>

ECharts.js雷达图
两种组件库的雷达图样式不大一样,可以根据需求做出选择。

另外ECharts.js还支持3d效果的图表,相当炫酷。值得研究。
ECharts.js3d效果

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Vue.js使用Echarts实现数据动态刷新功能,需要先安装Echarts和Vue.js的相关依赖。 1. 首先,在Vue项目中安装Echarts和Vue-Echarts依赖。可以使用npm或yarn安装。 ```bash npm install echarts vue-echarts ``` 2. 在Vue的组件中引入Echarts和Vue-Echarts。 ```javascript import echarts from 'echarts' import VueECharts from 'vue-echarts' // 引入需要的Echarts主题 import 'echarts/theme/macarons' export default { components: { VueECharts }, data() { return { chartOptions: {}, data: [] } }, mounted() { this.initChart() // 调用数据刷新方法 this.refreshData() }, methods: { initChart() { // 初始化图表配置 this.chartOptions = { // 设置Echarts主题 theme: 'macarons', // 设置图表类型和数据 series: [{ type: 'bar', data: this.data }] } }, refreshData() { // 模拟异步获取数据 setTimeout(() => { // 更新数据 this.data = [100, 200, 300, 400, 500] // 在数据更新后重新渲染图表 this.$refs.chart.refresh() // 定时调用数据刷新方法 this.refreshData() }, 2000) } } } ``` 3. 在Vue模板中使用Vue-Echarts组件显示图表。 ```html <template> <div> <vue-echarts ref="chart" :options="chartOptions"></vue-echarts> </div> </template> ``` 以上是一个简单的示例,通过不断更新数据并定时刷新图表实现了数据动态刷新功能。在实际开发中,可以根据需求对图表样式、数据等进行自定义配置。 ### 回答2: Vue.js是一种基于JavaScript的前端框架,而Echarts是一种数据可视化工具。在Vue.js使用Echarts实现数据动态刷新功能,主要分为以下几个步骤。 首先,我们需要安装Echarts。可以通过npm或者yarn来安装Echarts,命令如下: ``` npm install echarts --save ``` 然后,在Vue组件中引入Echarts的库文件,可以在main.js中全局引入,或者在需要使用Echarts组件中局部引入,命令如下: ``` import echarts from 'echarts' ``` 接下来,创建一个div作为Echarts图表的容器,并设置其样式和大小,例如: ``` <div id="chart" style="width: 600px; height: 400px;"></div> ``` 然后,在Vue组件的生命周期钩子函数中,使用Echarts创建图表,并将数据传入图表。例如,在created钩子函数中: ``` created() { this.initChart() }, methods: { initChart() { // 根据容器的id获取图表的dom对象 const chartDom = document.getElementById('chart') // 创建echarts实例对象 const myChart = echarts.init(chartDom) // 根据实际需求设置图表的配置项和数据 const option = { //... series: [ { //... data: this.data // 设置数据 } ] } // 使用配置项配置图表 myChart.setOption(option) } } ``` 最后,当需要刷新数据时,可以通过更新this.data来动态刷新图表数据,并重新渲染图表。例如,在一个按钮的点击事件中: ``` methods: { refreshData() { // 在此处根据实际需求更新this.data的值 //... // 重新渲染图表 this.initChart() } } ``` 通过以上步骤,就可以在Vue.js使用Echarts实现数据动态刷新功能了。当数据变化时,只需要更新数据并重新渲染图表即可。 ### 回答3: 在Vue.js使用ECharts实现数据动态刷新功能的具体步骤如下: 1. 首先,安装ECharts库。可以通过npm安装ECharts,运行命令:npm install echarts --save 2. 引入ECharts库。在Vue组件中,通过import语句引入ECharts库,如:import echarts from 'echarts' 3. 在Vue组件的data选项中定义一个变量,用于存储ECharts实例。例如:chart: null 4. 在Vue组件的mounted钩子函数中,初始化ECharts实例,并将其挂载到页面上的DOM节点上。例如: ``` mounted() { this.chart = echarts.init(this.$refs.chartContainer) } ``` 5. 在Vue组件的methods选项中,编写一个方法用于更新图表数据。例如: ``` updateChart() { // 获取新的数据 const newData = fetchData() // 更新图表数据 this.chart.setOption({ series: [ { data: newData } ] }) } ``` 在这个方法中,首先通过适当的方式获取新的数据,然后通过setOption方法更新图表的数据。 6. 在需要的时机,调用updateChart方法来更新图表数据。 以上就是在Vue.js使用ECharts实现数据动态刷新功能的基本步骤。在实际应用中,可能还需要根据具体需求对图表进行配置和样式的调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值