文章目录
1 安装/卸载
echarts官方文档:https://echarts.apache.org/zh/index.html
1.1 安装
安装最新版
npm install echarts --save
指定版本安装
npm install echarts@4.8.0 --save
1.2 卸载
npm uninstall echarts
2 引入
2.1 全局引入
V4
import echarts from 'echarts'
V5
import * as echarts from 'echarts'
2.2 按需引入
V4
import echarts from 'echarts/lib/echarts'
V5
import * as echarts from 'echarts/lib/echarts'
3 实战
Test.vue
<template>
<div>
<div ref="new_user_day_lineChart" style="width: 400px; height: 400px; background-color: #ffffff; padding: 20px; border-radius: 20px;"></div>
</div>
</template>
<script>
let url = 'http://127.0.0.1/';
import * as echarts from 'echarts'
import {get} from "../http/api.js";
import {lineChart_option, pie_option} from '../echarts/echarts_option.js'
let a_day_list;
let a_day_num_list;
export default {
name: "Test",
mounted() {
let that = this;
that.new_user_day_lineChart = echarts.init(this.$refs.new_user_day_lineChart);
get(url + '/bigdata_info', 'post', "").then(res => {
console.log(res.data)
a_day_list = res.data.a_day_list;
a_day_num_list = res.data.a_day_num_list;
that.new_user_day_lineChart.setOption(lineChart_option("新增用户", "日统计", u_day_list, "人", u_day_num_list, ['red']))
})
}
}
</script>
echarts_option.js
export const lineChart_option = (title, subtitle, date_list, unit, num_list, color) => {
let option = {
title: {
text: title,
subtext: subtitle,
left: 'center'
},
tooltip: {
trigger: 'axis'
},
grid: {
left: '3%',
right: '12%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {
type: 'png'
},
magicType: {
type: ['line', 'bar', 'stack']
}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: date_list
},
yAxis: {
type: 'value',
axisLabel: {
formatter: '{value} ' + unit
},
textStyle: {
color: '#fff'
}
},
series: [
{
name: '新增',
type: 'line',
data: num_list,
smooth: true,
markPoint: {
data: [
{type: 'max', name: 'Max'},
{type: 'min', name: 'Min'}
]
},
markLine: {
data: [{type: 'average', name: 'Avg'}]
}
}
],
color: color
}
return option;
}
export const pie_option = (num_json, color) => {
let option = {
title: {
text: '文章占比',
left: 'center',
top: 5
},
series: [
{
name: 'Access From',
type: 'pie',
radius: '55%',
data: num_json,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
],
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
left: 'bottom'
},
toolbox: {
show: true,
feature: {
saveAsImage: {}
}
},
color: color,
};
return option;
}
<p><h3>文章目录</h3><ul><ul><li><a href="#1__2">1 安装/卸载</a></li><ul><li><a href="#11__6">1.1 安装</a></li><li><a href="#12__17">1.2 卸载</a></li></ul><li><a href="#2__22">2 引入</a></li><ul><li><a href="#21__23">2.1 全局引入</a></li><li><a href="#22___34">2.2 按需引入</a></li></ul><li><a href="#3__43">3 实战</a></li></ul></ul></p>
<h2><a id="1__2"></a>1 安装/卸载</h2>
<p>echarts官方文档:<a href="https://echarts.apache.org/zh/index.html" target="_blank">https://echarts.apache.org/zh/index.html</a></p>
<h3><a id="11__6"></a>1.1 安装</h3>
<p>安装最新版</p>
<pre><div class="hljs"><code class="lang-powershell">npm install echarts <span class="hljs-literal">--save</span>
</code></div></pre>
<p>指定版本安装</p>
<pre><div class="hljs"><code class="lang-powershell">npm install echarts@<span class="hljs-number">4.8</span>.<span class="hljs-number">0</span> <span class="hljs-literal">--save</span>
</code></div></pre>
<h3><a id="12__17"></a>1.2 卸载</h3>
<pre><div class="hljs"><code class="lang-powershell">npm uninstall echarts
</code></div></pre>
<h2><a id="2__22"></a>2 引入</h2>
<h3><a id="21__23"></a>2.1 全局引入</h3>
<p><code>V4</code></p>
<pre><div class="hljs"><code class="lang-powershell">import echarts from <span class="hljs-string">'echarts'</span>
</code></div></pre>
<p><code>V5</code></p>
<pre><div class="hljs"><code class="lang-powershell">import * as echarts from <span class="hljs-string">'echarts'</span>
</code></div></pre>
<h3><a id="22___34"></a>2.2 按需引入</h3>
<p><code>V4</code></p>
<pre><div class="hljs"><code class="lang-powershell"> import echarts from <span class="hljs-string">'echarts/lib/echarts'</span>
</code></div></pre>
<p><code>V5</code></p>
<pre><div class="hljs"><code class="lang-powershell">import * as echarts from <span class="hljs-string">'echarts/lib/echarts'</span>
</code></div></pre>
<h2><a id="3__43"></a>3 实战</h2>
<p><code>Test.vue</code></p>
<pre><div class="hljs"><code class="lang-html"><span class="hljs-tag"><<span class="hljs-name">template</span>></span>
<span class="hljs-tag"><<span class="hljs-name">div</span>></span>
<span class="hljs-tag"><<span class="hljs-name">div</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"new_user_day_lineChart"</span> <span class="hljs-attr">style</span>=<span class="hljs-string">"width: 400px; height: 400px; background-color: #ffffff; padding: 20px; border-radius: 20px;"</span>></span><span class="hljs-tag"></<span class="hljs-name">div</span>></span>
<span class="hljs-tag"></<span class="hljs-name">div</span>></span>
<span class="hljs-tag"></<span class="hljs-name">template</span>></span>
<span class="hljs-tag"><<span class="hljs-name">script</span>></span><span class="language-javascript">
<span class="hljs-keyword">let</span> url = <span class="hljs-string">'http://127.0.0.1/'</span>;
<span class="hljs-keyword">import</span> * <span class="hljs-keyword">as</span> echarts <span class="hljs-keyword">from</span> <span class="hljs-string">'echarts'</span>
<span class="hljs-keyword">import</span> {get} <span class="hljs-keyword">from</span> <span class="hljs-string">"../http/api.js"</span>;
<span class="hljs-keyword">import</span> {lineChart_option, pie_option} <span class="hljs-keyword">from</span> <span class="hljs-string">'../echarts/echarts_option.js'</span>
<span class="hljs-keyword">let</span> a_day_list;
<span class="hljs-keyword">let</span> a_day_num_list;
<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> {
<span class="hljs-attr">name</span>: <span class="hljs-string">"Test"</span>,
<span class="hljs-title function_">mounted</span>(<span class="hljs-params"></span>) {
<span class="hljs-keyword">let</span> that = <span class="hljs-variable language_">this</span>;
<span class="hljs-comment">// 新增用户 日统计 初始化</span>
that.<span class="hljs-property">new_user_day_lineChart</span> = echarts.<span class="hljs-title function_">init</span>(<span class="hljs-variable language_">this</span>.<span class="hljs-property">$refs</span>.<span class="hljs-property">new_user_day_lineChart</span>);
<span class="hljs-title function_">get</span>(url + <span class="hljs-string">'/bigdata_info'</span>, <span class="hljs-string">'post'</span>, <span class="hljs-string">""</span>).<span class="hljs-title function_">then</span>(<span class="hljs-function"><span class="hljs-params">res</span> =></span> {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(res.<span class="hljs-property">data</span>)
a_day_list = res.<span class="hljs-property">data</span>.<span class="hljs-property">a_day_list</span>;
a_day_num_list = res.<span class="hljs-property">data</span>.<span class="hljs-property">a_day_num_list</span>;
<span class="hljs-comment">// 新增用户 日统计</span>
that.<span class="hljs-property">new_user_day_lineChart</span>.<span class="hljs-title function_">setOption</span>(<span class="hljs-title function_">lineChart_option</span>(<span class="hljs-string">"新增用户"</span>, <span class="hljs-string">"日统计"</span>, u_day_list, <span class="hljs-string">"人"</span>, u_day_num_list, [<span class="hljs-string">'red'</span>]))
})
}
}
</span><span class="hljs-tag"></<span class="hljs-name">script</span>></span>
</code></div></pre>
<p><code>echarts_option.js</code></p>
<pre><div class="hljs"><code class="lang-javascript"><span class="hljs-comment">/**
* lineChart: 折线图
* title: 标题
* color: 折线颜色 ['red','blue']
* */</span>
<span class="hljs-keyword">export</span> <span class="hljs-keyword">const</span> <span class="hljs-title function_">lineChart_option</span> = (<span class="hljs-params">title, subtitle, date_list, unit, num_list, color</span>) => {
<span class="hljs-keyword">let</span> option = {
<span class="hljs-attr">title</span>: {
<span class="hljs-attr">text</span>: title,
<span class="hljs-attr">subtext</span>: subtitle,
<span class="hljs-attr">left</span>: <span class="hljs-string">'center'</span>
<span class="hljs-comment">// textStyle: {</span>
<span class="hljs-comment">// color: '#fff'</span>
<span class="hljs-comment">// }</span>
},
<span class="hljs-comment">// 提示框</span>
<span class="hljs-attr">tooltip</span>: {
<span class="hljs-attr">trigger</span>: <span class="hljs-string">'axis'</span>
},
<span class="hljs-comment">// 图例</span>
<span class="hljs-comment">// legend: {</span>
<span class="hljs-comment">// icon: 'circle',</span>
<span class="hljs-comment">// left: 'center',</span>
<span class="hljs-comment">// top: 0,</span>
<span class="hljs-comment">// data: ['好评', '一般', '差评']</span>
<span class="hljs-comment">// },</span>
<span class="hljs-comment">// 比例大小</span>
<span class="hljs-comment">// 比例大小</span>
<span class="hljs-attr">grid</span>: {
<span class="hljs-attr">left</span>: <span class="hljs-string">'3%'</span>,
<span class="hljs-attr">right</span>: <span class="hljs-string">'12%'</span>,
<span class="hljs-attr">bottom</span>: <span class="hljs-string">'3%'</span>,
<span class="hljs-attr">containLabel</span>: <span class="hljs-literal">true</span>
},
<span class="hljs-comment">// 工具栏</span>
<span class="hljs-attr">toolbox</span>: {
<span class="hljs-attr">feature</span>: {
<span class="hljs-attr">saveAsImage</span>: {
<span class="hljs-attr">type</span>: <span class="hljs-string">'png'</span>
},
<span class="hljs-attr">magicType</span>: {
<span class="hljs-attr">type</span>: [<span class="hljs-string">'line'</span>, <span class="hljs-string">'bar'</span>, <span class="hljs-string">'stack'</span>]
}
}
},
<span class="hljs-attr">xAxis</span>: {
<span class="hljs-attr">type</span>: <span class="hljs-string">'category'</span>,
<span class="hljs-attr">boundaryGap</span>: <span class="hljs-literal">false</span>,
<span class="hljs-comment">// data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']</span>
<span class="hljs-attr">data</span>: date_list
},
<span class="hljs-attr">yAxis</span>: {
<span class="hljs-attr">type</span>: <span class="hljs-string">'value'</span>,
<span class="hljs-comment">// 初始化 单位 (可以不填)</span>
<span class="hljs-attr">axisLabel</span>: {
<span class="hljs-attr">formatter</span>: <span class="hljs-string">'{value} '</span> + unit
},
<span class="hljs-comment">// axisPointer: {</span>
<span class="hljs-comment">// snap: true</span>
<span class="hljs-comment">// }</span>
<span class="hljs-attr">textStyle</span>: {
<span class="hljs-attr">color</span>: <span class="hljs-string">'#fff'</span>
}
},
<span class="hljs-attr">series</span>: [
{
<span class="hljs-attr">name</span>: <span class="hljs-string">'新增'</span>,
<span class="hljs-attr">type</span>: <span class="hljs-string">'line'</span>,
<span class="hljs-comment">// smooth: true, // 平滑曲线显示</span>
<span class="hljs-comment">// data: [120, 132, 101, 134, 190, 230, 210, 201, 234, 290, 230, 210],</span>
<span class="hljs-attr">data</span>: num_list,
<span class="hljs-attr">smooth</span>: <span class="hljs-literal">true</span>,
<span class="hljs-comment">// 取最大、小值</span>
<span class="hljs-attr">markPoint</span>: {
<span class="hljs-attr">data</span>: [
{<span class="hljs-attr">type</span>: <span class="hljs-string">'max'</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Max'</span>},
{<span class="hljs-attr">type</span>: <span class="hljs-string">'min'</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Min'</span>}
]
},
<span class="hljs-comment">// 取平均值</span>
<span class="hljs-attr">markLine</span>: {
<span class="hljs-attr">data</span>: [{<span class="hljs-attr">type</span>: <span class="hljs-string">'average'</span>, <span class="hljs-attr">name</span>: <span class="hljs-string">'Avg'</span>}]
}
}
],
<span class="hljs-attr">color</span>: color <span class="hljs-comment">//['red']</span>
}
<span class="hljs-keyword">return</span> option;
}
<span class="hljs-comment">/**
* lineChart: 饼图
* color: ['red','blue']
* */</span>
<span class="hljs-keyword">export</span> <span class="hljs-keyword">const</span> <span class="hljs-title function_">pie_option</span> = (<span class="hljs-params">num_json, color</span>) => {
<span class="hljs-keyword">let</span> option = {
<span class="hljs-attr">title</span>: {
<span class="hljs-attr">text</span>: <span class="hljs-string">'文章占比'</span>,
<span class="hljs-comment">// subtext: 'Fake Data',</span>
<span class="hljs-attr">left</span>: <span class="hljs-string">'center'</span>,
<span class="hljs-attr">top</span>: <span class="hljs-number">5</span>
},
<span class="hljs-attr">series</span>: [
{
<span class="hljs-attr">name</span>: <span class="hljs-string">'Access From'</span>,
<span class="hljs-attr">type</span>: <span class="hljs-string">'pie'</span>,
<span class="hljs-attr">radius</span>: <span class="hljs-string">'55%'</span>,
<span class="hljs-attr">data</span>: num_json,
<span class="hljs-comment">// data: [</span>
<span class="hljs-comment">// {value: 1048, name: 'Search Engine'}</span>
<span class="hljs-comment">// ],</span>
<span class="hljs-attr">emphasis</span>: {
<span class="hljs-attr">itemStyle</span>: {
<span class="hljs-attr">shadowBlur</span>: <span class="hljs-number">10</span>,
<span class="hljs-attr">shadowOffsetX</span>: <span class="hljs-number">0</span>,
<span class="hljs-attr">shadowColor</span>: <span class="hljs-string">'rgba(0, 0, 0, 0.5)'</span>
}
}
}
],
<span class="hljs-attr">tooltip</span>: {
<span class="hljs-attr">trigger</span>: <span class="hljs-string">'item'</span>
},
<span class="hljs-attr">legend</span>: {
<span class="hljs-attr">orient</span>: <span class="hljs-string">'vertical'</span>,
<span class="hljs-attr">left</span>: <span class="hljs-string">'bottom'</span>
<span class="hljs-comment">// left: 'left'</span>
},
<span class="hljs-comment">// 保存图片</span>
<span class="hljs-attr">toolbox</span>: {
<span class="hljs-attr">show</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">feature</span>: {
<span class="hljs-attr">saveAsImage</span>: {}
}
},
<span class="hljs-attr">color</span>: color,
};
<span class="hljs-keyword">return</span> option;
}
</code></div></pre>
留言