VUE-cli使用-Echarts柱状表使用以及注意事项(v-if v-show的问题)

安装eharts
​​​​​​​npm install echarts -S

在main.js全局引入

import echarts from 'echarts'
Vue.prototype.$echarts = echarts

在需要用的组件中创建标签

<div id="myChart"></div>

methods里面创建绘制图表方法以及图标配置

// 绘制图表
			drawLine() {
				// 基于准备好的dom,初始化echarts实例
				let myChart = this.$echarts.init(document.getElementById('myChart'))
				// 绘制图表
				myChart.setOption({
					grid: {
						top: '5%',
						left: '10%',
						bottom: '32.5%'
					},
					color: ['#f00'], //全局字体颜色
					textStyle: {
						fontSize: 12,
					},
					tooltip: {
						trigger: 'axis',
						confine: true,
						axisPointer: { // 坐标轴指示器,坐标轴触发有效
							type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
						},
					},
					legend: {
						show: false //提示
					},
					xAxis: {
						show: this.charsShow,
						data: this.productNamesList, //x轴数据 与y轴一一对应
						axisLabel: {
							interval: 0,
							rotate: 50, //旋转
							textStyle: {
								fontSize: 10,
							},
							formatter: function (val) {
								var relVal = '';
								relVal += val.substr(0, 5) + "…";
								return relVal;
							} //处理函数
						}
					},
					yAxis: {
						fontSize: 12,
						type: 'value',
						show: this.charsShow,
						axisLabel: {
							textStyle: {
								fontSize: 12 // 让字体变大
							},
						}
					},
					series: [{
						name: '销量',
						type: 'bar',
						data: this.productSalesCountList,
					}],
					dataZoom: [{
							type: 'slider',
							show: false,
							xAxisIndex: [0],
							start: 0,
							end: 60
						},
						{
							type: 'inside',
							xAxisIndex: [0],
							start: 0,
							end: 60
						},
					],
				});
			},

data设置一个示例数据,ajax同样

return {
				
				productNamesList: [
            '商品1', '商品2', '商品3', '商品4',
    ],
				productSalesCountList: [
    1,2,4,6

],
			
}

直接使用this.drawLine()方法即可绘制图表

注意事项:v-if对echarts会报错,因为使用this.drawLine()方法找不到需要渲染的DOM对象(v-if),v-show会影响图表的宽高,建议给图表加一个父级用v-if控制父级

	<div class="chart_box" v-if="charsShow">
		<div id="myChart">
		</div>
	</div>


	<div class="nullData nullpos" v-else>暂无相关数据</div> 
data(){
    return{
        nullDraw: false,
        charsShow: false
    }
}
	if (that.productNamesList.length > 0 && that.productSalesCountList.length > 0) {
								that.nullDraw=true
								that.charsShow = true;
								if (that.nullDraw == true) {
									this.$nextTick(
										function () {
											this.drawLine();
										}
									)
								}
							} else {
								console.log('首次加载如果没有数据不加载图表,如果有数据再加载图表,每次执行完毕设置nullDraw为false')
								that.nullDraw=false
								if (that.nullDraw == true) {
									this.$nextTick(
										function () {
											this.drawLine();
										}
									)
								}
								that.charsShow = false;
								that.nullDraw=false
							}

效果图

### 使用 Vue 2 实现美观柱状图 为了在 Vue 2 中创建美观的柱状图,可以采用 ECharts 这一强大的可视化工具。ECharts 是由百度开发并维护的一个开源 JavaScript 图库,支持多种类型的图,包括但不限于柱状图、折线图以及饼图等,并且能够很好地集成到 Vue.js 项目中[^1]。 #### 安装依赖包 首先,在构建基于 Vue 的应用之前,需确保已安装必要的 npm 包: ```bash npm install vue echarts --save ``` 接着可以通过 `import` 或者 `<script>` 标签引入 ECharts 到项目里。 对于 Vue CLI 创建的应用程序来说,推荐的方式是在项目的入口文件(通常是 main.js)中全局注册 ECharts 插件以便于后续使用: ```javascript // main.js import * as echarts from 'echarts'; Vue.prototype.$echarts = echarts; ``` #### 初始化 ECharts 实例 当完成上述准备工作之后,便可以在具体的组件内部初始化 ECharts 实例来绘制所需的图形了。下面是一个简单的例子展示了如何在一个名为 BarChart.vue 的单文件组件内设置一个基本的柱状图[^3]: ```html <template> <div ref="barChart" style="width: 600px;height:400px;"></div> </template> <script> export default { mounted() { this.initChart(); }, methods: { initChart() { const chartDom = this.$refs.barChart; var myChart = this.$echarts.init(chartDom); var option; option = { tooltip: { trigger: 'axis', axisPointer: {} }, legend: {}, xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], axisLabel: { color: '#cccccc', fontSize: '12px' } }, yAxis: { type: 'value', axisLabel: { color: '#cccccc', fontSize: '8px' }, splitLine: { show: true, lineStyle: { color: '#2F83F7', type: 'dashed' } } }, series: [ { name: 'Sales', type: 'bar', data: [120, 200, 150, 80, 70, 110, 130], itemStyle: { borderRadius: [5, 5, 0, 0] } } ] }; option && myChart.setOption(option); } } }; </script> ``` 这段代码定义了一个带有自定义样式的简单柱形图,其中包含了 X 轴标签的颜色调整、Y 轴分割线样式修改等功能,使得整个图看起来更加精致美观。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值