您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Echarts Bar橫向柱狀圖的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
實現數據按月統計和按日統計的動態切換。按月統計時,每個月數據都會展示,x 軸顯示 12 個標簽;按日統計時,x 軸不完全顯示所有標簽,間隔顯示,而且柱狀體的寬度也會變化。主要是采用的是setOption方法。
官方文檔[setOption]:echarts.apache.org/zh/api.html…
<script> import * as R from "ramda"; const source1 = [ ["1月", 1330, 666, 560], ["2月", 820, 760, 660], ...... ["11月", 901, 880, 360], ["12月", 934, 600, 700], ]; const source2 = [ ["1日", 1330, 666, 560], ["2日", 820, 760, 660], ...... ["29日", 934, 600, 700], ["30日", 1330, 666, 560], ]; // 具體配置如之前所示,詳細省略,只做基本示例展示 const initOption = { ... dataset: { source: source1 }, }; export default { data() { return { charts: null, isDaily: false, }; }, mounted() { this.charts = this.$echarts.init( document.getElementById("barCharts"), null, { renderer: "svg", } ); this.charts.setOption(R.clone(initOption)); }, methods: { handleSource() { this.isDaily = !this.isDaily; this.charts.setOption( R.mergeDeepRight(initOption, { // 動態更新數據源 dataset: { source: this.isDaily ? source2 : source1, }, xAxis: { // 動態更新標簽間隔 axisLabel: { interval: this.isDaily ? 4 : "auto", }, }, series: R.map( // 動態更新柱體寬度 (o) => ((o.barWidth = this.isDaily ? 12 : 24), o), initOption.series ), }), true ); this.charts.resize(); }, }, }; </script>
在 web 項目中做圖表時,圖表的寬高不是固定的,需要隨著瀏覽器寬度高度自適應,使用的方法就是resize。如果有多個圖表,需要同時進行resize處理。
<script> export default { mounted() { window.addEventListener("resize", this.handleResize, false); }, destroyed() { window.removeEventListener("resize", this.handleResize); }, methods: { handleResize() { const _this = this; const timer = setTimeout(() => { _this.lineCharts.resize(); _this.barCharts.resize(); }, 500); // 清除定時器 this.$once("hook:beforeDestroy", () => { setTimeout(timer); }); }, }, }; </script>
本質和橫向是一樣的,就是將 x,y 軸值更換一下;x 軸為value,y 軸為category
let option = { xAxis: { type: "value", }, yAxis: { type: "category", }, };
其實原理和橫向的一樣,就是漸變色處理的地方 x,y 值更換一下
let horizontalColor = { type: "linear", x: 1, // 更換 y: 0, x2: 0, y2: 0, // 更換 colorStops: [ { offset: 0, color: "rgba(234,244,255,1)" }, { offset: 1, color: "rgba(234,244,255,0.3)" }, ], global: false, };
柱體的屬性設置series中color可以是一個函數,在函數中處理。核心代碼為colorList[params.dataIndex]
let colorList = [ "#1890ff", "#52c41a", "#faad14", "#f5222d", "#1DA57A", "#d9d9d9", ]; let series = [ { type: "bar", barWidth: 16, itemStyle: { // 定制顯示(按順序),實現不同顏色的柱體 color: (params) => { return colorList[params.dataIndex]; }, }, dimensions: ["類型", "銷售數量"], }, ];
柱體的屬性設置series中label可以是一個函數,在函數中處理。可以設置位置,字體顏色和大小等。核心代碼為params.value[params.encode.x[0]]。
let series = [ { // ...... type: "bar", label: { // 柱圖頭部顯示值 show: true, position: "right", color: "#333", fontSize: "12px", formatter: (params) => { return params.value[params.encode.x[0]]; }, }, }, ];
和橫向的一樣,就是要注意取值params[0].axisValue, item.seriesName, item.value[item.encode.x[0]]
let tooltip = R.merge(tooltip, { formatter: function(params) { let html = `<div > <div > ${params[0].axisValue} </div> ${params .map( ( item ) => `<div > <span style="display:inline-block;margin-right:8px;border-radius:6px;width:6px;height:6px;background-color:${ item.color };"></span> ${item.seriesName} <span >${ item.value[item.encode.x[0]] }</span> </div>` ) .join("")} </div>`; return html; }, });
charts.setOption({ title: { text: "銷售數量分布", }, dataset: { source: [ ["蘋果", 200], ["桃子", 180], ["葡萄", 340], ["香蕉", 250], ["芒果", 166], ["榴蓮", 185], ], }, xAxis: R.merge(yAxis, { type: "value", }), yAxis: R.mergeDeepRight(xAxis, { type: "category", axisPointer: { shadowStyle: { color: horizontalColor, }, }, }), series, tooltip, });
感謝各位的閱讀!關于“Echarts Bar橫向柱狀圖的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。