中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Echart Bar雙柱狀圖樣式的示例分析

發布時間:2021-08-26 09:03:51 來源:億速云 閱讀:195 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Echart Bar雙柱狀圖樣式的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

    安裝及配置

    前端框架為easywebpack-vue,使用的Echarts版本為^5.0.1

    Echarts 官方文檔: echarts.apache.org/zh/index.ht…

    1. 安裝 Echarts

    npm install echarts --save

    2. 全局引入 Echarts

    在 main.js 加入如下代碼:

    import * as echarts from "echarts";
    Vue.prototype.$echarts = echarts;

    3. 按需引入 Echarts

    (1)新增 echarts.js 文件

    // 引入 echarts 核心模塊,核心模塊提供了 echarts 使用必須要的接口
    import * as echarts from "echarts/core";
    
    // 引入各種圖表,圖表后綴都為 Chart
    import { BarChart, LineChart, PieChart } from "echarts/charts";
    
    // 引入提示框,標題,直角坐標系等組件,組件后綴都為 Component
    import {
      TitleComponent,
      TooltipComponent,
      ToolboxComponent,
      GridComponent,
      LegendComponent,
      AxisPointerComponent,
      DatasetComponent,
    } from "echarts/components";
    
    // 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必須的一步
    import { SVGRenderer } from "echarts/renderers";
    
    // 注冊必須的組件
    echarts.use([
      BarChart,
      LineChart,
      PieChart,
    
      TitleComponent,
      TooltipComponent,
      ToolboxComponent,
      GridComponent,
      LegendComponent,
      AxisPointerComponent,
      DatasetComponent,
    
      SVGRenderer,
    ]);
    
    export default echarts;

    (2)在 main.js 文件中引入

    import echarts from "./utils/echarts";
    Vue.prototype.$echarts = echarts;

    使用舉例

    <template>
      <div id="charts" ></div>
    </template>
    
    <script>
      import * as R from "ramda";
    
      export default {
        mounted() {
          this.initCharts();
        },
        methods: {
          initCharts() {
            let charts = this.$echarts.init(document.getElementById("charts"));
            let option = {
              title: {
                text: "逐月消費趨勢", // 標題
                subtext: "柱狀圖", // 副標題
              },
              xAxis: {
                type: "category",
              },
              yAxis: {
                type: "value",
              },
              color: ["#1890ff", "#52c41a", " #faad14"], // 柱狀圖顏色
              dataset: {
                source: [
                  // 數據源
                  ["1月", 1330, 666, 560],
                  ["2月", 820, 760, 660],
                  ["3月", 1290, 1230, 780],
                  ["4月", 832, 450, 890],
                  ["5月", 901, 880, 360],
                  ["6月", 934, 600, 700],
                ],
              },
              series: [
                // 圖標列設置
                { type: "bar", stack: "total", name: "蘋果" },
                { type: "bar", stack: "total", name: "梨子" },
                { type: "bar", stack: "total", name: "桃子" },
              ],
              tooltip: {
              // 提示框組件
              }
            };
            charts.setOption(option);
          },
        },
      };
    </script>
    
    <style lang="scss" scoped></style>

    原始效果展示:

    Echart Bar雙柱狀圖樣式的示例分析

    改造后目標效果展示:

    Echart Bar雙柱狀圖樣式的示例分析

    樣式優化

    x 軸基礎樣式

    基礎設置如下所示,可設置刻度和軸線相關的屬性

    xAxis: {
      type: "category",
      boundaryGap: true, // 坐標軸兩邊留白策略,默認為true
      axisTick: { // 刻度
        show: false,
      },
      axisLabel: { // 刻度標簽
        color: "#808080",
        fontSize: 12,
        margin: 8, // 刻度標簽與軸線之間的距離
        interval: "auto", // x軸標簽顯示間隔,自動
      },
      axisLine: { // 軸線
        lineStyle: {
          color: "#c3c3c3",
          width: 0.5,
        },
      },
      splitLine: { // 分割線
        show: false,
        interval: "auto",
      },
      splitArea: { // 分割區域
        show: false,
        areaStyle: {},
      },
    },

    最大和最小刻度標簽

    主要屬性是interval,要設置的足夠大,比正常展示的刻度個數大一些,就能實現只展示最大和最小刻度標簽

    xAxis: {
      axisLabel: {
        // interval: "auto",
        interval: 50, // 只顯示最大和最小坐標
        showMinLabel: true, // 顯示最小刻度標簽
        showMaxLabel: true, // 顯示最大刻度標簽
      }
    }

    Echart Bar雙柱狀圖樣式的示例分析

    series 數據列懸浮高亮

    const stackBarSeries = {
      type: "bar", // 柱狀圖
      barWidth: 32, // 柱體寬度
      stack: "total", // 數據堆疊
      showBackground: false, // 是否顯示柱條背景色
      // 高亮的圖形樣式和標簽樣式
      emphasis: {
        // 鼠標hover時,同業務項高亮,其他項淡出圖形
        // focus: "series",
        // 默認配置,僅當前hover數據淡出
        focus: "none",
      },
    };
    
    let option = {
      series: R.map(
        (o) =>
          R.merge(stackBarSeries, {
            name: o,
          }),
        ["蘋果", "梨子", "桃子"]
      ),
    };

    Echart Bar雙柱狀圖樣式的示例分析

    坐標指示器背景漸變色

    主要是設置tooltip提示框組件的trigger,讓 x 軸懸浮觸發;然后設置xAxis的坐標指示器axisPointer,指示器遮罩樣式shadowStyle可以設置漸變色

    let option = {
      tooltip: {
        // 提示框組件
        trigger: "axis", // 坐標軸觸發
      },
      xAxis: {
        // 坐標軸指示器
        axisPointer: {
          type: "shadow",
          // 坐標軸指示器的 z 值,控制圖形的前后順序
          z: 1,
          // 指示器遮罩樣式
          shadowStyle: {
            // 解決hover背景色漸變問題
            color: {
              type: "linear",
              x: 0,
              y: 0,
              x2: 0,
              y2: 1,
              colorStops: [
                {
                  offset: 0,
                  color: "rgba(234,244,255,1)", // 0% 處的顏色
                },
                {
                  offset: 1,
                  color: "rgba(234,244,255,0.3)", // 100% 處的顏色
                },
              ],
              global: false, // 缺省為 false
            },
            // 設置背景色及陰影
            // color: "rgba(234,244,255,1)",
            // opacity: 1,
            // shadowColor: "rgba(0, 0, 0, 0.5)",
            // shadowBlur: 10,
            // shadowOffsetX: 10,
            // shadowOffsetY: 10,
          },
        },
      },
    };

    Echart Bar雙柱狀圖樣式的示例分析

    tooltip 提示框自定義樣式

    tooltip默認的樣式或者值可能不符合開發的要求,可以使用formatter函數自定義處理

    let option = {
      tooltip: {
        // 提示框組件
        trigger: "axis", // 坐標軸觸發
        padding: [20, 16, 12, 16],
        backgroundColor: "#fff",
        alwaysShowContent: false,
        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 >&yen;${item.value[
                      item.encode.y[0]
                    ] || 0}</span>
                  </div>`
                )
                .join("")}
                <div >
                <span>總計</span>
                <span>&yen;${R.reduceRight(
                  R.add,
                  0,
                  R.drop(1, params[0].value || [])
                )}</span>
              </div>
            </div>`;
          return html;
        },
      },
    };

    Echart Bar雙柱狀圖樣式的示例分析

    y 軸基礎樣式

    let option = {
      yAxis: {
        type: "value",
        minInterval: 100,
        nameGap: 8,
        axisLabel: {
          color: "#808080",
          fontSize: 10,
          // formatter: (value) => {
          //   return moneyFormatValue(value);
          // },
        },
        splitLine: {
          lineStyle: {
            type: "dashed",
            color: "#ebebeb",
            width: 0.5,
          },
        },
      },
    };

    Echart Bar雙柱狀圖樣式的示例分析

    legend 圖例樣式自定義

    let option = {
      grid: {
        left: 0,
        right: 12,
        bottom: 0,
        top: 68,
        containLabel: true,
      },
      // 圖例設置
      legend: {
        top: 32,
        left: -5,
        icon: "circle",
        itemHeight: 6, // 修改icon圖形大小
        itemGap: 24,
        textStyle: {
          fontSize: 12,
          color: "#333",
          padding: [0, 0, 0, -8], // 修改文字和圖標距離
        },
      },
    };

    Echart Bar雙柱狀圖樣式的示例分析

    關于“Echart Bar雙柱狀圖樣式的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    西乌珠穆沁旗| 新田县| 海原县| 米林县| 阆中市| 和平区| 巩留县| 尖扎县| 西青区| 岐山县| 宜城市| 九江市| 和顺县| 什邡市| 乡宁县| 连云港市| 石狮市| 井陉县| 驻马店市| 墨竹工卡县| 江都市| 类乌齐县| 长垣县| 英超| 定襄县| 乾安县| 鲁山县| 宁远县| 钟祥市| 科尔| 静乐县| 泰来县| 荣成市| 屏东县| 辽宁省| 松原市| 灌云县| 徐汇区| 额尔古纳市| 巨野县| 偃师市|