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

溫馨提示×

溫馨提示×

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

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

Echarts Bar橫向柱狀圖的示例分析

發布時間:2021-08-26 11:49:55 來源:億速云 閱讀:765 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關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>

Echarts Bar橫向柱狀圖的示例分析

解決 echarts 寬高自適應問題

在 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]];
      },
    },
  },
];

tooltip 提示框自定義

和橫向的一樣,就是要注意取值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橫向柱狀圖的示例分析

感謝各位的閱讀!關于“Echarts Bar橫向柱狀圖的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

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

AI

新余市| 陵川县| 隆化县| 三明市| 应用必备| 温泉县| 泸定县| 洮南市| 淮安市| 普兰县| 鹤岗市| 思南县| 成安县| 崇义县| 偃师市| 楚雄市| 滦南县| 广饶县| 西昌市| 南雄市| 宁阳县| 社旗县| 平阴县| 威远县| 武义县| 石嘴山市| 长白| 金秀| 扎囊县| 贺兰县| 临高县| 孟州市| 逊克县| 航空| 望谟县| 淳化县| 安阳县| 秦皇岛市| 郑州市| 全州县| 石渠县|