一箫一剑平生意,负尽狂名十五年。这篇文章主要讲述Echarts常用折线和频谱以及三维散点图相关的知识,希望能为你提供帮助。
1 折线图
- 鼠标放在点上时显示的数据效果,在代码中用到的就是?
?tooltip?
??这个参数,其中??show?
??的默认值是??true?
??,可以省略,当我们不想显示悬浮提示效果,将show修改为??false?
?。 - ?
?trigger?
?设置这个参数,效果是可以看到一个竖直的虚线,不添加则不显示。 - ?
?backgroundColor?
?效果是显示数据的弹窗对应的背景色,需要什么颜色自行设置。 - ?
?extraCssText?
?可以设置弹窗显示的阴影效果。
options:
title:
,
// 悬浮提示
tooltip:
show: true,
trigger: axis,
backgroundColor: #fff,
textStyle:color: #4B9BFB ,
extraCssText: box-shadow: 0px 2px 5px 0px rgba(50,107,174,0.19);
,
xAxis:
// name: 1/50mm/s,
type: category,
data: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
itemStyle:
show: false
,
yAxis:
type: value,
name: 单位:mm/s,
axisLine:
show:true,
,
// 给y轴添加单位
// axisLabel:formatter:valuemm/s
,
series: [
// name: 数据,
showSymbol: true,//是否默认展示圆点
symbol: circle,//设定为实心点
data: [0, -245, -496, -519, -543, -479, 794, -237, -568, -514, -372, -115, -664, -745, -468, -683, -732, -208, -506, -564, -376, -537, -198, -583, -65, -465, -677, -483, -546, -422, 0, -669, -193, -657, -910, -705, -627, -630, -553, 273, -468, -807, -642, -345, -51, -609, -705, -111, -423, -462, -498, -486, -563, -332, -565, -499, -339, -428, -498, -239, -319, -409, -546, -474, -481],
color: "#4786FF",
symbolSize: 6,
type: line,
lineStyle:
width: 1,
color: #4786FF,
],
dataZoom: [
show: true,
realtime: true,
start: 0,
end: 100,
height: 8, //组件高度
left: 30, //左边的距离
right: 30, //右边的距离
bottom: 0, //右边的距离
handleColor: #D3DCFD, //h滑动图标的颜色
handleStyle:
borderColor: #D3DCFD,
borderWidth: 1,
shadowBlur: 2,
background: #D3DCFD,
shadowColor: #D3DCFD,
,
backgroundColor: #f4f7f9, //两边未选中的滑动条区域的颜色
showDataShadow: false, //是否显示数据阴影 默认auto
showDetail: false, //即拖拽时候是否显示详细数值信息 默认true
// xAxisIndex: [0]
,
type: inside,
realtime: true,
start: 0,
end: 5,
,
],
backgroundColor: #fff
效果图如下
总结
数据可以自定义修改,想看效果图,可以将代码直接复制代码到echarts的案例左侧,然后将?
?option?
??后面的??:?
??修改为??=?
?就可以了。2 频谱图
- 【Echarts常用折线和频谱以及三维散点图】
- Dom中我们需要写入对应的标签,如果需要轮播效果,我们可以采用?
?el-carousel?
??标签来实现,轮播图显示的个数由??el-carousel-item?
?标签数量决定。
< el-carousel el-carousel @change="onChange" :autoplay="false"style="width: 100%" trigger="click">
< el-carousel-item >
< div class="chart-title"> 频谱图& nbsp; (& nbsp; < span> 最大值:< /span> < span class="chart-max"> spectrogramMax< /span> < span> 平均值:< /span> < span class="chart-min"> spectrogramAverage< /span> & nbsp; )& nbsp; < /div>
< IEcharts style="width: 850px; height: 320px; " :option="barOptions" ref="spectChart"> < /IEcharts>
< /el-carousel-item>
< /el-carousel>
需要引入什么插件,我们按需引入就行
import IEcharts from vue-echarts-v3;
import echarts/lib/chart/line;
import echarts/lib/component/dataZoom;
import echarts/lib/chart/line;
import echarts/lib/component/tooltip;
下面是频谱图的核心代码,类似于echarts中options的内容
- ?
?start?
??和??end?
?用来控制缩放的比例位置。 - ?
?backgroundColor?
?用来设置未缩放位置的颜色。 - ?
?showDetail?
??用来设置拖拽时候是否显示详细数值信息,默认值??true?
?。
dataZoom: [
show: true,
realtime: true,
start: 0,
end: 55, //控制两个柱形的距离
height: 8, //组件高度
left: 30, //左边的距离
right: 30, //右边的距离
bottom: 0, //右边的距离
]
参数解释
- x轴的数据就放在xAxis中的?
?data?
?中。 - 我们可以在data的每个成员之间加入?
??
?, 来增加间隔距离。 - type可以设置为?
?category?
? - ?
?axisLabel?
?用来设置x轴数据之间的距离 - 当x轴的文字描述太长显示不全时,我们可以使用?
?rotate?
?来设置倾斜的角度。 - 频谱图可以设置?
?legend?
??的data为??[pictorialBar, bar]?
?。 - ?
?lineStyle?
??可以设置线的一些样式,所用到的属性有??color?
??, ??width?
??, ??opacity?
??, ??type?
?,其中type可以设置为虚线、实线。 - 坐标中刻度的显示可以通过设置?
?axisTick?
??中的??show?
??参数来实现,??false?
??为不显示对应的刻度,??true?
?表示显示对应的刻度。
barOptions:
legend:
data: [pictorialBar, bar]
,
tooltip:
show: true,
trigger: axis,
backgroundColor: #fff,
textStyle:color: #4B9BFB ,
extraCssText: box-shadow: 0px 2px 5px 0px rgba(50,107,174,0.19);
,
xAxis:
type: category,
// data: [20, 30],
data: [20Hz, , 46Hz, , 69Hz, , 105Hz, , 160Hz, , 244Hz, , 371Hz, , 565Hz, , 859Hz, , 1.30KHz, , 1.98KHz, , 3.02KHz, , 4.60KHz, , 7.00KHz, , 10.6KHz, , 20KHz],
axisTick:
show: false,
alignWithLabel: true
,
axisLabel:
rotate:40,
margin: 10 //x轴数据距离x轴的距离
,
,
yAxis:
// splitLine: show: false,
type: value,
axisLine:
show: true, //---是否显示
,
axisLabel:
interval: 0,
margin: 10, //y轴数据距离y轴的距离
,
axisTick:
show: false, //显示每个值对应的刻度
,
nameGap: 10,
splitLine://---grid 区域中的分隔线
show: true, //---是否显示,category类目轴不显示,此时我的y轴为类目轴,splitLine属性是有意义的
lineStyle:
color: #DADADA,
width: 1,
opacity: 0.57,
type: dashed, //---类型
,
,
,
// animationEasing: elasticOut,
series: [
type: pictorialBar,
symbol: bar,
data: [
value: 65,
symbolRepeat: true,
symbolSize: [20, 10],
symbolMargin: 4,
,
value: 65,
symbolRepeat: true,
symbolSize: [20, 10],
symbolMargin: 4,
],
itemStyle:
color: #2C90F1
,
],
dataZoom: [
show: true,
realtime: true,
start: 0,
end: 55, //控制两个柱形的距离
height: 8, //组件高度
left: 30, //左边的距离
right: 30, //右边的距离
bottom: 0, //右边的距离
handleColor: #D3DCFD, //h滑动图标的颜色
handleStyle:
borderColor: #D3DCFD,
borderWidth: 1,
shadowBlur: 2,
background: #D3DCFD,
shadowColor: #D3DCFD,
,
backgroundColor: #f4f7f9, //两边未选中的滑动条区域的颜色
showDataShadow: false, //是否显示数据阴影 默认auto
showDetail: false, //即拖拽时候是否显示详细数值信息 默认true
//xAxisIndex: [0, 1] //这行代码会__dzAxisProxy报错
,
type: inside,
realtime: true,
start: 0,
end: 10,
,
],
itemStyle:normal:label:show: true
,
频谱图的效果如下:
使用方法
如果想要看效果图,可以直接去echarts官网,将上面的代码复制到echarts案例上,只需要将?
?barOptions:?
??修改成??option=?
?就可以了。3 三维散点分布图参数解释
- 三维散点图需要我们引入两个插件?
?echarts 4.9.0?
?? 对应的??echarts-gl 1.1.2?
?。 - 需要注意的是,两个插件版本不一致会导致三维散点分布图无法显示。
- 涉及的参数有?
?xAxis3D?
??, ??yAxis3D?
??,??zAxis3D?
??以及??grid3D?
?。 - 涉及调节宽高的参数?
?boxWidth?
??,??boxHeight?
??,??boxDepth?
??,??top?
?。 - 每个坐标系下面的name对应的是显示的坐标名。
- 显示的点都放在series的?
?data?
?中。
option =
tooltip: ,
xAxis3D:
name: "x",//x轴显示为x
type: value,
// min: dataMin,//获取数据中的最值
// max: dataMax
min: 0,
max: 80,
interval: 20,//坐标轴刻度标签的显示间隔,在类目轴中有效
axisTick:
show: false, //显示每个值对应的刻度
,
axisLine://x轴坐标轴,false为隐藏,true为显示
show: true
,
axisLabel:
show: false////是否显示刻度 (刻度上的数字,或者类目), false为隐藏,true为显示
,
itemStyle:
borderColor: "#fff",
backgroundColor: "#fff"
,
,
yAxis3D:
name: "y",//y轴显示为y
type: value,
splitNumber: 5,
axisTick:
show: false, //显示每个值对应的刻度
,
min: 0,
max: 360,
interval: 90
,
zAxis3D:
name: "z",//z轴显示为z
type: value,
min: -20,
max: 60,
interval: 20,
axisTick:
show: false, //显示每个值对应的刻度
,
,
grid3D:
axisLine:
lineStyle://坐标轴样式
color:#070707,//轴线颜色
opacity:.8,//(单个刻度不会受影响)
width: 1//线条宽度
,
axisPointer:
lineStyle:
color: #f00//坐标轴指示线
,
show: false//不坐标轴指示线
,
viewControl:
// autoRotate: true,//旋转展示
// projection: orthographic
// beta:0,
distance:230, //与视角的距离,值越大,图离视角越远,图越小
alpha:7, //绕x轴旋转的角度(上下旋转),增大,视角顺时针增大(向上)
beta:20, //绕y轴旋转的角度(左右旋转),增大,视角逆时针增大(向右)
center:[-15,-5,-20]//第一个参数:增大,视角沿x轴正方向水平右移动(图向左);第二个参数:增大,视角沿y轴正方向垂直向上移动(图向下);第三个参数:增大,视角向z轴正方向移动(图变小)
,
boxWidth: 120,
boxHeight: 70,
boxDepth: 120,
top: -100
,
series: [
type: scatter3D,
dimensions: [x, y, z//悬浮到点时弹出的显示框信息
],
// encode:
// x: [3, 1, 5],// 表示维度 3、1、5 映射到 x 轴。
// y: 1,// 表示维度 2 映射到 y 轴。
// z: 3,
// tooltip:[a,c,b], // 表示维度 3、2、4 会在 tooltip 中显示。
// label: a// 表示 label 使用维度 3。
// ,
data: [
[0, 0, 0],
[1, 0, 0],
[0, 1, 0],
[0, 1, 1],
[21, 24, 25],
[22, 25, 26],
],
symbolSize: 4,//点的大小
// symbol: triangle,
itemStyle:
// borderWidth: 1,
color: "#87f0e5",
// borderColor: rgba(255,255,255,0.8)//边框样式
,
emphasis:
itemStyle:
color: #ccc//高亮
,
// itemStyle:
//color: "#87f0e5"
//
],
backgroundColor: "#e8e8e8"
;
效果图如下
4 折线图和散点图
- vue中引入相关的dom代码
< IEchartsstyle="width: 850px; height: 320px; " :option="partialOptions2" ref="partialEchart"> < /IEcharts>
- 项目中按需引入插件
import echarts/lib/component/dataZoom;
import echarts/lib/chart/line;
import echarts/lib/component/tooltip;
参数解释
- 坐标系就形成需要定义?
?xAxis?
??和??yAxis?
?。 - 通过?
?xAxis?
??中的??type?
??和??axisLabel?
?来设置类型和间隔。 - ?
?axisLabel?
??中的数字是对data的数据进行划分,例如我们设置data为??[0,...,360]?
?这样一个0到360的数组。 - 如果?
?axisLabel?
??设置为59,那么只会显示??[0, 60, 120, 180, 240, 300, 360]?
?效果,如图中所示的x轴,同理y轴也可以这样设置。 - 图中红色的线,我们可以设置?
?markLine?
?。 - 我们可以设置?
?dataZoom?
?来控制放缩效果。 - 散点图的属性使用?
?scatter?
?
type: category,
data: [0,...,360], //中间省略了0-360中间的数
axisLabel:
interval:59
- 我们也可以用另一种方式,?
?type?
??设置为??value?
??,??min?
??表示最小值,??max?
??表示最大值,??interval?
?表示间隔为20,效果如图的y轴所示。
type: value,
min: -20,
max: 60,
interval: 20,
全部配置代码如下
partialOptions2:
title:
,
// 悬浮提示
tooltip:
show: true,
trigger: axis,
backgroundColor: #fff,
textStyle:color: #4B9BFB ,
extraCssText: box-shadow: 0px 2px 5px 0px rgba(50,107,174,0.19);
,
xAxis:
// name: 1/50mm/s,
type: category,
// type: value,
data: [],
itemStyle:
show: false
,
axisTick:
show: false,
alignWithLabel: true
,
// 让起点从x轴0开始,左侧不留白
boundaryGap: false,
// min:0,
// max: 360,
// interval: 60
axisLabel:
// minInterval: 0,
// maxInterval: 360,
interval:59
,
yAxis:
type: value,
// name: 单位:dBmV,
min: -20,
max: 60,
interval: 20,
axisLine:
show:true,
,
// 给y轴添加单位
// axisLabel:formatter:valuemm/s
,
series: [
// name: 数据,
showSymbol: true,//是否默认展示圆点
symbol: circle,//设定为实心点
data: [[0,20], [100,58], [200, 0],[260, -20], [360, 20]],
// data: [0, 20, 58, -20, 20],
color: "#49d86b",
symbolSize: 1,
type: line,
smooth: true,
// 设置折线图的颜色
normal:
color: "#49d86b", //改变折线点的颜色
,
// lineStyle:
//width: 1,
//color: red,
// ,
// type: line,
,
// name: 数据,
showSymbol: true,//是否默认展示圆点
symbol: circle,//设定为实心点
symbolSize: 2,
data: [],
color: "#3dcbdb",
// symbolSize: 6,
type: scatter,
// 设置折线图的颜色
// normal:
//color: "#1F824E", //改变折线点的颜色
// ,
// lineStyle:
//width: 1,
//color: red,
// ,
// type: line,
,
// y轴设置的直线
type: "line", //如果将 markLine 单独写在一个对象里,就必须加 type ,不然报错。
markLine:
symbol: "none", //相当于["none", "none"] [虚线,没有箭头]
data: [
yAxis: 0, //控制y轴横线的值
silent: true, // true 不响应鼠标事件
],
label:
// position:"end", //将警示值放在哪个位置,三个值“start”,"middle","end"开始中点 结束
// fontSize: 14,
// formatter: function ()
//return "17"
//
// formatter: "0"
,
lineStyle:
color: "#ec3d35",
width: 2,
type: "solid", //实线,不写默认虚线
,
],
dataZoom: [
show: true,
realtime: true,
start: 0,
// end: 5,
end: 100,
height: 8, //组件高度
left: 30, //左边的距离
right: 30, //右边的距离
bottom: 0, //右边的距离
handleColor: #D3DCFD, //h滑动图标的颜色
handleStyle: n
borderColor: #D3DCFD,
borderWidth: 1,
shadowBlur: 2,
background: #D3DCFD,
shadowColor: #D3DCFD,
,
backgroundColor: #f4f7f9, //两边未选中的滑动条区域的颜色
showDataShadow: false, //是否显示数据阴影 默认auto
showDetail: false, //即拖拽时候是否显示详细数值信息 默认true
// xAxisIndex: [0]
,
type: inside,
realtime: true,
start: 0,
end: 5,
,
],
itemStyle :normal: label : show: true
,
效果图如下
小结
新知识需要我们不断的去探索,遇到问题时,我们不仅要去解决,更要学习别人的思路,懂得举一反三,才能将别人的知识变成自己的。了解完这些知识后,可以再去找几个案例自己手动实现来加深巩固。
最后关注公众号【前端每日技巧】,写作不易,希望能点赞
推荐阅读
- Redis服务的主从复制哨兵Cluster
- 园区元宇宙(打造智慧园区综合治理可视化管理平台)
- 基于Linux的点对点VXLAN通信
- k8s系列-02-架构设计
- 初识 Bash 蓝桥实验楼
- 简单学习一下ibd数据文件解析
- JQuery Datatable 请求数据解析#yyds干货盘点#
- SpringBoot Redis五种数据类型的简单操作
- Selenium3自动化测试31Cookie处理