echarts使用大总结

echarts图表x轴数据太多显示不全的问题

在这里插入图片描述
在这里插入图片描述
问题如图,x轴数据条数过多可能导致x轴显示不全,开始我使用下面方法

xAxis: {type: "category",min: min,max: max,data:time,axisLabel: {interval:num,//interval为x轴两相邻数据之间所包含数据条数,num为x轴总条数除以24所得结果show: true,textStyle: {color: "#a9a9a9", //更改坐标轴文字颜色fontSize: 10 //更改坐标轴文字大小},rotate: 40,formatter: function(v) {var date = new Date(v);return `${('0' + date.getHours()).slice(-2)}:${('0' + date.getMinutes()).slice(-2)}`;// return `${('0' + date.getHours()).slice(-2)}:${('0' + date.getMinutes()).slice(-2)}:${('0' + date.getSeconds()).slice(-2)}`;},},

开始我以为这样设置是可以的,但是出现的问题是后面有些数据没有显示完全,丢掉一部分数据,后来经过改进要在axisLabel设置最大值最小值属性,代码如下

xAxis: {type: "category",data:time,axisLabel: {interval:num,show: true,textStyle: {color: "#a9a9a9", //更改坐标轴文字颜色fontSize: 10 //更改坐标轴文字大小},rotate: 40,formatter: function(v) {var date = new Date(v);return `${('0' + date.getHours()).slice(-2)}:${('0' + date.getMinutes()).slice(-2)}`;// return `${('0' + date.getHours()).slice(-2)}:${('0' + date.getMinutes()).slice(-2)}:${('0' + date.getSeconds()).slice(-2)}`;},showMinLabel: true,//显示最小值showMaxLabel: true,//显示最大值},

这样设置两属性之后,图表就会绘制完全,所以数据都有显示。

echarts的X轴数据太多出现了间隔不一致的问题,请问怎么解决?
xAxis: [{axisLabel: {interval: 2}
}]interval 是指间隔多少个类别画栅格,为 0 时则每个数据都画,为 1 时间隔 1 个画,以此类推。
Echarts 修改折线的颜色和折线的点的大小方法
series: [{                            type: 'line',smooth:true,//折点是圆弧状的showSymbol: true,symbol: 'circle',     //折点设定为实心点symbolSize: 20,   //设定实心点的大小hoverAnimation: false,itemStyle:{ normal:{ color:'#fc8a0f', //折点颜色lineStyle:{ color:'#ff9c35' //折线颜色} } }animation: false,data: dataa,                          markPoint: {     //显示一定区域内的最大值和最小值data: [{ type: 'max', name: '最大值' },{ type: 'min', name: '最小值' }]}]
echarts下载图表按钮隐藏

在这里插入图片描述
在有些echarts图表里面,并不需要下载按钮下载图表的功能,这个时候,可以选择去掉或者隐藏起来。

解决办法很简单,找到toolbox属性,注释掉即可。


/* toolbox: {feature: {saveAsImage: {}}},*/
echarts y轴百分比显示

更改配置项yAxis:

yAxis: [{  type: 'value',  axisLabel: {  show: true,  interval: 'auto',  formatter: '{value} %'  },  show: true  }  ],
echarts更改坐标轴文字颜色及大小
xAxis: {data: anameArr,axisLabel: {show: true,textStyle: {color: '#c3dbff',  //更改坐标轴文字颜色fontSize : 14      //更改坐标轴文字大小}},axisTick: {show: false //是否显示刻度线},axisLine:{lineStyle:{color:'#315070' //更改坐标轴颜色}}
}
echarts渐变色实现方法

我使用的是echarts 4.2版本

在管网的文档中可查看其配置项,以柱状图为例:

首先在series中找type:‘line’

在这里插入图片描述
然后找到areaStyle
在这里插入图片描述
在color中有方法能生成渐变色:

// 线性渐变,前四个参数分别是 x0, y0, x2, y2, 范围从 0 - 1,相当于在图形包围盒中的百分比,如果 globalCoord 为 `true`,则该四个值是绝对的像素位置
color: {type: 'linear',x: 0,y: 0,x2: 0,y2: 1,colorStops: [{offset: 0, color: 'red' // 0% 处的颜色}, {offset: 1, color: 'blue' // 100% 处的颜色}],globalCoord: false // 缺省为 false
}
// 径向渐变,前三个参数分别是圆心 x, y 和半径,取值同线性渐变
color: {type: 'radial',x: 0.5,y: 0.5,r: 0.5,colorStops: [{offset: 0, color: 'red' // 0% 处的颜色}, {offset: 1, color: 'blue' // 100% 处的颜色}],globalCoord: false // 缺省为 false
}
// 纹理填充
color: {image: imageDom, // 支持为 HTMLImageElement, HTMLCanvasElement,不支持路径字符串repeat: 'repeat' // 是否平铺, 可以是 'repeat-x', 'repeat-y', 'no-repeat'
}

第二种方法:使用echarts内置的渐变色生成器echarts.graphic.LinearGradient

{type: 'bar',itemStyle: {normal: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1,       //4个参数用于配置渐变色的起止位置, 这4个参数依次对应右/下/左/上四个方位. 而0 0 0 1则代表渐变色从正上方开始[{offset: 0, color: '#000'},{offset: 0.5, color: '#888'},{offset: 1, color: '#ddd'}]                //数组, 用于配置颜色的渐变过程. 每一项为一个对象, 包含offset和color两个参数. offset的范围是0 ~ 1, 用于表示位置)}}
}

效果:
在这里插入图片描述

echarts使用技巧(一)echarts的图表自适应resize问题、单选、缩放等

       这些东西要是有精力和时间可以通读echarts文档,里面都有配置详细介绍。该博客只是把自己使用echarts遇到的问题记录下,并不全,加深印象,抛砖引玉而已,完整学习的请移步官方文档
1、legend设置单选

legend: {data:['db block gets', 'consistent gets'],selectedMode: 'single',
},

修改图例legend颜色,定义color数组,对应图例即可

color:['#48cda6','#fd87ab','#11abff','#ffdf33','#968ade'],  //手动设置每个图例的颜色
legend: {  //图例组件right:68,  //图例组件离右边的距离orient : 'vertical',  //布局  纵向布局width:40,      //图行例组件的宽度,默认自适应x : 'right',   //图例显示在右边itemWidth:10,  //图例标记的图形宽度itemHeight:10, //图例标记的图形高度data:['30%','10%','15%','20%','25%'],textStyle:{    //图例文字的样式color:'#333',fontSize:12}
},

效果图:
在这里插入图片描述
2、添加缩放滚动

加上dataZoom配置

dataZoom: [{show: true,realtime: true,start: 65,end: 85},{type: 'inside',realtime: true,start: 45,end: 85}
],

需要配合grid配置给dataZoom留出底部位置

也可以将show设置为false就不会显示那个滚动图,但是依然有滚动效果

grid: {top: 30,bottom: 60
},

3、视图里面添加多个线条:在series数组里面继续加对象即可

series: [{name:'db block gets',type:'line',xAxisIndex: 1,//加这个dataZoom对该对象不起作用,需要去掉这个属性smooth: true,//代表平滑曲线,如需要折线,则去掉即可data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]},{name:'consistent gets',type:'line',smooth: true,data: [3.9, 5.9, 11.1, 18.7, 48.3, 69.2, 231.6, 46.6, 55.4, 18.4, 10.3, 0.7]}
]

4、视图里面加阴影提示:tooltip,提示框组件

show,默认true,是否显示提示框组件

trigger,触发类型,item、axis、none,当为none的时候代表什么都不触发,就不会显示提示框

axisPointer,坐标轴指示器配置项,实际上坐标轴指示器的全部功能,都可以通过轴上的 axisPointer 配置项完成

label属性加formatter函数,可以格式化提示框显示内容

  tooltip: {trigger: 'axis',axisPointer: {type: 'cross',label:{formatter: function (params) {return '快照时间:' + params.value;}}}
},

效果图如下:
在这里插入图片描述
5、雷达图添加阴影提示

series: [{type: 'radar',tooltip: {trigger: 'item'},itemStyle: {normal: {areaStyle: {type: 'default'}}},data: [{value: this.radarValues,name: '指标值'}]}
]

6、一般echarts里面配色都是默认的,如果需要修改,就加上 color:[]配置项 ,这里也推荐一个取色器,很好用Pipette

7、stackedBar图形配置

{name: '表使用比例',type: 'bar',stack: '总量',//代表叠加的形态,如果去掉这个,该条就会单独出来label: {  //就是每条目上会显示数字,去掉label属性就不显示normal: {show: true,position: 'insideRight'}},data: [20, 2, 1, 34, 20]
},

8、legrend的data数组里面的内容必须与series配置里面对象的name完全一样,否则会不显示。所以当你legrend不显示的时候,一定是这里没对应上,修改即可。

9、echarts的图表自适应,resize问题

       echarts官网的实例都具有响应式功能,确实不是单纯的宽度改变,是每次调整后图表是重新绘制。猜想echart源码里应该有resize这个API,打开调试器,打开echart源码,Ctrl+F,果然找到了

echart图表本身是提供了一个resize的函数的。

于是当浏览器发生resize事件的时候,让其触发echart的resize事件,重绘canvas。

在这里插入图片描述
       用window.onresize = myChart.resize; 可以完成自适应,就是把window的onresize事件赋值为echart的resize事件

       当然这是单个图表的情况,要是多个图表,发现会不起作用。

       多个图表可以使用addEventListener

window.addEventListener("resize", () => { this.myChart.resize();  this.myChart2.resize();  this.myChart3.resize();
});

在vue组件上就可以直接单个组件添加进事件列表

myLogLine.setOption(option);
window.addEventListener("resize", () => { myLogLine.resize();});myLine.setOption(option);
window.addEventListener("resize", () => { myLine.resize();});
ECharts 折线图数据堆叠问题解决方法

数据堆叠即:

第2条数据值 = 第1条数据值 + 第2条数据值

第3条数据值 = 第2条数据值 + 第3条数据值

以此类推

部分代码及其图表如下:

option = {title: {text: '折线图堆叠'},tooltip: {trigger: 'axis'},legend: {data:['直接访问','搜索引擎']},grid: {left: '3%',right: '4%',bottom: '3%',containLabel: true},toolbox: {feature: {saveAsImage: {}}},xAxis: {type: 'category',boundaryGap: false,data: ['周一','周二','周三','周四','周五','周六','周日']},yAxis: {type: 'value'},series: [{name:'直接访问',type:'line',stack: '总量',data:[320, 332, 301, 334, 390, 330, 320]},{name:'搜索引擎',type:'line',stack: '总量',data:[0, 0, 0, 0, 1290, 0, 0]}]
};

最后一步步查找,原来是 stack 的原因,stack 值为 ‘总量是’,折线图堆叠(第二条线的数值=本身的数值+第一条线的数值,第三条的数值=第二条线图上的数值+本身的数值,以此类推…)显示
解决方法:
去掉series中stack属性,或者将stack设置为不同的值
去掉stack属性后的图表,数值正常

echart如何去除折线图中默认的网格

echart中折线图中有默认的网格如何去除呢?

原图如下
在这里插入图片描述
附上代码

var myChart = echarts.init(document.getElementById('main'));
option = {title: {text: '折线图堆叠'},grid: {show:false},tooltip: {trigger: 'axis'},toolbox: {feature: {saveAsImage: {}}},xAxis: {type: 'category',boundaryGap: false,data: ['14:00','15:00','16:00','17:00','18:00','19:00','20:00']        },yAxis: {type: 'value',},series: [{name:'搜索引擎',type:'line',areaStyle: {normal: {color:'#87CEFA'}},data:[488, 932, 1100, 1500, 1702, 2045, 2244]}]
};
myChart.setOption(option);    

去除后的图如下
在这里插入图片描述
只要在对应的Axis中的属性splitLine设置show:false即可
在这里插入图片描述
完整代码

var myChart = echarts.init(document.getElementById('main'));
option = {title: {text: '折线图堆叠'},grid: {show:false},tooltip: {trigger: 'axis'},toolbox: {feature: {saveAsImage: {}}},xAxis: {type: 'category',boundaryGap: false,data: ['14:00','15:00','16:00','17:00','18:00','19:00','20:00'],//splitLine:{//show:false//}},yAxis: {type: 'value',splitLine:{show:false},},series: [{name:'搜索引擎',type:'line',areaStyle: {normal: {color:'#87CEFA'}},data:[488, 932, 1100, 1500, 1702, 2045, 2244]}]
};
myChart.setOption(option);    
设置echarts 的网格样式颜色
option = {xAxis: {type: 'category',data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],//网格样式splitLine: {show: true,lineStyle:{color: ['red'],width: 1,type: 'solid'}}},yAxis: {type: 'value',//网格样式splitLine: {show: true,lineStyle:{color: ['blue'],width: 1,type: 'solid'}}},series: [{data: [820, 932, 901, 934, 1290, 1330, 1320],type: 'line',smooth: true}]
};

效果图如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我对CSS vertical-align的一些理解与认识(一)

1. vertical-align一大堆乱七八糟的属性 有句俗语叫做“见多不怪”,我估摸着这些top,bottom属性大家都见过,没啥看头,没啥说头。老实讲,我看到这些养臭虫的属性也头疼,所以,忘了他们,我们说点有…

我对CSS vertical-align的一些理解与认识(二)

1. 我对不同浏览器解析vertical-align属性的理解 在上集中,在最后提供的实例中,vertical-align:middle实际上应该是与后面的文字是独立的,毫无关联,就是说vertical-align无论是什么,都不影响文字在box中的位置&#x…

VC2010如何给ActiveX添加事件

利用VC开发ActiveX时,需要给控件添加标准事件或自定义事件,在VC6中有多种方法: 一、按Ctrl W 打开类向导->切换到“ActiveX Events"->Add Event...,如图: 二、右…

CSS中height:100%和height:inherit的异同

1. height:100%和height:inherit的异同 1.1 兼容性差异 height:100% IE6 √ height:inherit IE8 √ 1.2 大多数情况作用是一样的 除去兼容性,大多数情况下,两者作用是一样的,甚至都很难想出不一样的理由 父容器height: auto&#xff0c…

cxxtest单元测试框架源码分析(二):所有对外功能实现分析

CxxTest的大部分诊断功能都是通过宏定义实现的,而且这部分的定义以及所有测试套的基类CxxTest:TestSuite定义和实现都在TestSuite.h和TestSuite.cpp里面。下面我们将通过分析这两个文件来分析CxxTest的对外功能体现。 1 //所有的类以及定义都是在CxxTest名称空间中2…

absolute元素在text-align属性下的对齐显示

1. absolute元素是否可以响应text-align属性? 众所周知,text-align属性可以有效作用于inline/inline-block水平的元素,那么应用了position:absloute/fixed声明的元素呢? 上面效果中的图片就是应用了position: absolute声明&#…

vue-cli proxy中跨域中pathRewrite配置理解

1. vue本地项目调试线上接口出现跨域问题 2. 通过在 config/index.js 配置文件中找到proxyTable配置项 dev: {// PathsassetsSubDirectory: static,assetsPublicPath: /,proxyTable: {/api: {target: http://XX.XX.XX.XX:8083,changeOrigin: true,pathRewrite: {^/api: /api …

CSS3选择器:nth-child和:nth-of-type之间的差异

1. 深呼吸,直接内容 :nth-child和:nth-of-type都是CSS3中的伪类选择器,其作用近似却又不完全一样,对于不熟悉的人对其可能不是很区分,本文就将介绍两者的不同,以便于大家正确灵活使用这两类选择器 先看一个简单的实例…

CSS3中的display:grid网格布局介绍

1.网格布局(grid): 它将网页划分成一个个网格&#xff0c;可以任意组合不同的网格&#xff0c;做出各种各样的布局; 2.基本概念&#xff1a; 容器和项目&#xff0c;如图所示&#xff1a; <div class"content"><div class"b">1</div>&…

微信小程序知识点GET

1. app.json中的pages用来设置小程序包含哪些页面以及页面的路径、window用来设置默认页面的窗口表现形式、tabBar用来设置小程序底部tab的表现 2. app.js中的App()函数用来注册一个小程序&#xff0c;接受的对象参数用来指定小程序的生命周期函数等&#xff0c;注意App()必须…

CSS3 - 新单位vw、vh、vmin、vmax使用详解(附样例)

关于height:100%和height:100vh的区别 像 px、em 这样的长度单位大家肯定都很熟悉&#xff0c;前者为绝对单位&#xff0c;后者为相对单位。CSS3 又引入了新单位&#xff1a;vw、vh、vmin、vmax。下面对它们做个详细介绍。 一、基本说明 1&#xff0c;vw、vh、vmin、vmax 的…

Enze Second day

哈喽&#xff0c;很高兴在云和学院又学了一天的新知识&#xff0c;现在&#xff0c;我来继续总结一下今天所学的以及对昨天的一些补充。 变量 • 声明变量的语法格式:–数据类型 变量名;•赋值: 变量名值;变量的命名 •命名规则&#xff1a;–1 必须以“字母”_或符号开头…

搭建一台本地json服务器

1、全局安装json-server(此时不管在哪个目录下面都可以) 2、cd至当前的项目文件夹所在的位置&#xff0c;新建一个文件夹jsonserver 3、在当前目录下运行npm init 4、再次安装运行 npm install json-server --save 5、此时的目录结构 --jsonserver--node_moduies--package-loc…