一 . 问题汇总: 折线图问题与解决折线图中的多条折线,怎么设置?
怎么设置echarts的背景颜色?
怎么设置X轴,Y轴的坐标线的颜色?
怎么将X轴的数据倾斜显示?
怎么让你的折线有弧度?
初始样式如图,以及要解决的问题:
二. 前提准备条件要使用echarts,首先要在你的页面中引入echarts.js;
要在.html文件中,设置一个容器,并给它设置宽高属性;再次声明,必须给容器设置宽高,它是用来给画布提供一个空间,否则是不会显示的;
最后就是关于echarts的配置;可以单独写一个js文件,然后引进来;
也可以直接在index.html中写一个
index.html文件代码如下:
我这里图方便,js就直接写在html文件里了
// 获取到这个DOM节点,然后初始化
var myChart = echarts.init(document.getElementById("box"));
// option 里面的内容基本涵盖你要画的图表的所有内容
var option = {
// 定义样式和数据
}
// 一定不要忘了这个,具体是干啥的我忘了,官网是这样写的使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
注意:
你在写myChart.setOption(option);这行代码的时候一定不要忘了这个myChart是要和你上面定义的var 变量名对应起来,比如var myChart = echarts.init(document.getElementById("box"));
举个栗子吧:
如果你定义的变量名是oMyChart,那你就这样写:
var oMyChart = echarts.init(document.getElementById("box"));
var option = {
// 定义样式和数据 }
oMyChart.setOption(option);
关键内容都在option中:
var option = {
backgroundColor: '#FBFBFB',
tooltip : {
trigger: 'axis'
},
legend: {
data:['充值','消费']
},
calculable : true,
xAxis : [
{
axisLabel:{
rotate: 30,
interval:0
},
axisLine:{
lineStyle :{
color: '#CECECE'
}
},
type : 'category',
boundaryGap : false,
data : function (){
var list = [];
for (var i &#61; 10; i <&#61; 18; i&#43;&#43;) {
if(i<&#61; 12){
list.push(&#39;2016-&#39;&#43;i &#43; &#39;-01&#39;);
}else{
list.push(&#39;2017-&#39;&#43;(i-12) &#43; &#39;-01&#39;);
}
}
return list;
}()
}
],
yAxis : [
{
type : &#39;value&#39;,
axisLine:{
lineStyle :{
color: &#39;#CECECE&#39;
}
}
}
],
series : [
{
name:&#39;充值&#39;,
type:&#39;line&#39;,
symbol:&#39;none&#39;,
smooth: 0.2,
color:[&#39;#66AEDE&#39;],
data:[800, 300, 500, 800, 300, 600,500,600]
},
{
name:&#39;消费&#39;,
type:&#39;line&#39;,
symbol:&#39;none&#39;,
smooth: 0.2,
color:[&#39;#90EC7D&#39;],
data:[600, 300, 400, 200, 300, 300,200,400]
}
]
};
三. 问题解决
3.1 怎么给echarts的容器添加背景色&#xff1f;
这是我碰到的第一个坑&#xff0c;你是不是和我一样&#xff0c;直接给容器添加了background-color属性&#xff0c;但是你会发现并没有什么卵用
代码如下&#xff1a;
效果如下&#xff1a;你会发现背景色应用不上&#xff0c;这里我自己认为&#xff0c;echarts画折线图什么的&#xff0c;就相当于是使用canvas在画图&#xff0c;它在画图前已经将画布初始化了&#xff0c;所以给容器添加背景色是不行的&#xff0c;那么怎么办呢&#xff1f;
解决办法&#xff1a;要在optionecharts图的配置中进行配置&#xff0c;添加background-color属性&#xff1b;
为了区别&#xff0c;看看到底是给容器添加的背景色应用上了&#xff0c;还是option中的背景色应用上了&#xff1b;
我们设置容器背景为粉色&#xff0c;设置echarts中的option为#FBFBFB&#xff1b;
代码如下&#xff1a;
// 获取到这个DOM节点&#xff0c;然后初始化
var myChart &#61; echarts.init(document.getElementById("box"));
// option 里面的内容基本涵盖你要画的图表的所有内容 // 定义样式和数据 var option &#61; {
// 给echarts图设置背景色 backgroundColor: &#39;#FBFBFB&#39;, // -----------> // 给echarts图设置背景色 tooltip: {
trigger: &#39;axis&#39;
},
legend: {
data: [&#39;充值&#39;, &#39;消费&#39;]
},
calculable: true,
xAxis: [{
type: &#39;category&#39;,
// boundaryGap: false, data: function() {
var list &#61; [];
for (var i &#61; 10; i <&#61; 18; i&#43;&#43;) {
if (i <&#61; 12) {
list.push(&#39;2016-&#39; &#43; i &#43; &#39;-01&#39;);
} else {
list.push(&#39;2017-&#39; &#43; (i - 12) &#43; &#39;-01&#39;);
}
}
return list;
}()
}],
yAxis: [{
type: &#39;value&#39;
}],
series: [{
name: &#39;充值&#39;,
type: &#39;line&#39;,
data: [800, 300, 500, 800, 300, 600, 500, 600]
}, {
name: &#39;消费&#39;,
type: &#39;line&#39;,
data: [600, 300, 400, 200, 300, 300, 200, 400]
}]
};
// 一定不要忘了这个&#xff0c;具体是干啥的我忘了&#xff0c;官网是这样写的使用刚指定的配置项和数据显示图表。 myChart.setOption(option);
区别以及效果&#xff1a;在这里我同时给容器添加背景色&#xff0c;在echarts配置中设置背景色&#xff0c;一会我们看看是哪个背景色作用上了&#xff0c;代码如下&#xff1a;很显然&#xff0c;配置里的背景色应用上了&#xff0c;所以直接给容器设置背景是行不通的&#xff0c;效果如图所示&#xff1a;
3.2 怎么设置多条折线以及每条折线的颜色在series中以数组形式添加多组数据即可&#xff1b;
在每条折线里面直接添加color: [&#39;相应的颜色&#39;]
代码如下&#xff1a;
效果图如下&#xff1a;
3.3 去掉小圆点设置symbol: &#39;none&#39;
代码对比&#xff1a;
效果对比&#xff1a;
3.4 设置折线图的弧度设置smooth属性
属性值在0-1之间
代码对比图&#xff1a;
效果对比图&#xff1a;
3.5 设置坐标轴的颜色
为了让效果颜色更加明显&#xff0c;就给坐标轴添加比较显眼的颜色&#xff0c;只做个示范用&#xff0c;项目中肯定不会用这么重的颜色&#xff0c;一般使用灰色系的颜色比较淡的设置X轴颜色为红色在xAxis下添加
axisLine: {
lineStyle: {
color: &#39;red&#39;
}
},同理设置Y轴
代码&#xff1a;
效果图&#xff1a;
3.6 怎么让折线图从X轴0刻度开始设置boundaryGap: false,
代码如下&#xff1a;
效果如下&#xff1a;
3.7 怎么让X轴的时间这组数据旋转有时候我们X轴数据比较长又比较多的时候&#xff0c;水平放置肯定成不下&#xff0c;那我们就让它倾斜着放&#xff0c;这样就可以放更多的数据。
好了&#xff0c;废话不多说&#xff0c;看代码&#xff1a;
效果如图&#xff1a;
四. 突然发现我写的有个小问题&#xff0c;少了一组数据&#xff0c;很尴尬的赶脚你可以直接在data中添加一组数据
哈哈&#xff0c;我比较懒&#xff0c;就直接修改那个判断条件&#xff0c;将i<&#61;18改成i<18;
完整的代码如下&#xff1a;
// 获取到这个DOM节点&#xff0c;然后初始化
var myChart &#61; echarts.init(document.getElementById("box"));
// option 里面的内容基本涵盖你要画的图表的所有内容 var option &#61; {
// 定义样式和数据 backgroundColor: &#39;#FBFBFB&#39;,
tooltip: {
trigger: &#39;axis&#39;
},
legend: {
data: [&#39;充值&#39;, &#39;消费&#39;]
},
calculable: true,
xAxis: [{
axisLabel: {
rotate: 30,
interval: 0
},
axisLine: {
lineStyle: {
color: &#39;red&#39;
}
},
type: &#39;category&#39;,
boundaryGap: false,
data: function() {
var list &#61; [];
for (var i &#61; 10; i <18; i&#43;&#43;) {
if (i <&#61; 12) {
list.push(&#39;2016-&#39; &#43; i &#43; &#39;-01&#39;);
} else {
list.push(&#39;2017-&#39; &#43; (i - 12) &#43; &#39;-01&#39;);
}
}
return list;
}()
}],
yAxis: [{
type: &#39;value&#39;,
axisLine: {
lineStyle: {
color: &#39;#CECECE&#39;
}
}
}],
series: [{
name: &#39;充值&#39;,
type: &#39;line&#39;,
symbol: &#39;none&#39;,
smooth: 0.3,
color: [&#39;#66AEDE&#39;],
data: [800, 300, 500, 800, 300, 600, 500, 600]
}, {
name: &#39;消费&#39;,
type: &#39;line&#39;,
symbol: &#39;none&#39;,
smooth: 0.3,
color: [&#39;#90EC7D&#39;],
data: [600, 300, 400, 200, 300, 300, 200, 400]
}]
};
// 一定不要忘了这个&#xff0c;具体是干啥的我忘了&#xff0c;官网是这样写的使用刚指定的配置项和数据显示图表。 myChart.setOption(option);
效果如图&#xff1a;
五. 鼠标放在折线上&#xff0c;显示该折点的数据
在series中添加itemStyle : { normal: {label : {show: true}}},
效果如下&#xff1a;
注&#xff1a;鼠标不放在上面是不会显示该点数据的。
折点数据 设置背景色
在series中添加样式
我在echarts 官方demo上加了一下&#xff0c;效果如下&#xff1a;
把以下代码&#xff0c;放到echarts的一个demo下&#xff0c;替换之后&#xff0c;运行可查看效果&#xff1a;
地址简书links.jianshu.com
option &#61; {
title: {
text: &#39;未来一周气温变化&#39;,
subtext: &#39;纯属虚构&#39;
},
tooltip: {
trigger: &#39;axis&#39;
},
legend: {
data:[&#39;最高气温&#39;,&#39;最低气温&#39;]
},
toolbox: {
show: true,
feature: {
dataZoom: {
yAxisIndex: &#39;none&#39;
},
dataView: {readOnly: false},
magicType: {type: [&#39;line&#39;, &#39;bar&#39;]},
restore: {},
saveAsImage: {}
}
},
xAxis: {
type: &#39;category&#39;,
boundaryGap: false,
data: [&#39;周一&#39;,&#39;周二&#39;,&#39;周三&#39;,&#39;周四&#39;,&#39;周五&#39;,&#39;周六&#39;,&#39;周日&#39;]
},
yAxis: {
type: &#39;value&#39;,
axisLabel: {
formatter: &#39;{value} °C&#39;
}
},
series: [
{
name:&#39;最高气温&#39;,
type:&#39;line&#39;,
data:[11, 11, 15, 13, 12, 13, 10],
itemStyle : { normal: {
label : {show: true,color:&#39;white&#39;,backgroundColor:&#39;black&#39;}
}},
markPoint: {
data: [
{type: &#39;max&#39;, name: &#39;最大值&#39;},
{type: &#39;min&#39;, name: &#39;最小值&#39;}
]
},
markLine: {
data: [
{type: &#39;average&#39;, name: &#39;平均值&#39;}
]
}
},
{
name:&#39;最低气温&#39;,
type:&#39;line&#39;,
data:[1, -2, 2, 5, 3, 2, 0],
markPoint: {
data: [
{name: &#39;周最低&#39;, value: -2, xAxis: 1, yAxis: -1.5}
]
},
markLine: {
data: [
{type: &#39;average&#39;, name: &#39;平均值&#39;},
[{
symbol: &#39;none&#39;,
x: &#39;90%&#39;,
yAxis: &#39;max&#39;
}, {
symbol: &#39;circle&#39;,
label: {
normal: {
position: &#39;start&#39;,
formatter: &#39;最大值&#39;
}
},
type: &#39;max&#39;,
name: &#39;最高点&#39;
}]
]
}
}
]
};