Echarts 柱狀圖配置詳解

龍恩0707發表於2018-07-28

Echarts 柱狀圖配置詳解

柱狀圖比如做成如下所示圖:

所有的基本配置如下:

// 指定圖表的配置項和資料
var option = {
  // ----  標題 -----
  title: {
    text: '主標題',
    textStyle: {
      color: 'red'
    },
    subtext: '副標題',
    subtextStyle: {
      color: 'blue'
    },
    padding: [0, 0, 10, 100]  // 位置
  },
  // ---- legend ----
  legend: {
    type: 'plain',  // 圖列型別,預設為 'plain'
    top: '1%',  // 圖列相對容器的位置 top\bottom\left\right
    selected: {
      // '銷量': true  // 圖列選擇,圖形載入出來會顯示選擇的圖列,預設為true
    },
    textStyle: {  // 圖列內容樣式
      color: '#fff',  // 字型顏色
      backgroundColor: 'black'  // 字型背景色
    },
    tooltip: {  // 圖列提示框,預設不顯示
      show: true,
      color: 'red'  
    },
    data: [   // 圖列內容
      {
        name: '銷量',
        icon: 'circle',
        textStyle: {
          color: 'red',  // 單獨設定某一個圖列的顏色
          backgroundColor: '#fff' // 單獨設定某一個圖列的字型背景色
        }
      }
    ]
  },
  // ---  提示框 ----
  tooltip: {
    show: true,   // 是否顯示提示框,預設為true
    trigger: 'item', // 資料項圖形觸發
    axisPointer: {   // 指示樣式
      type: 'shadow',
      axis: 'auto'
    },
    padding: 5,
    textStyle: {   // 提示框內容的樣式
      color: '#fff'  
    }
  },
  // ---- gird區域 ---
  gird: {
    show: false,    // 是否顯示直角座標系網格
    top: 80,  // 相對位置 top\bottom\left\right
    containLabel: false, // gird 區域是否包含座標軸的刻度標籤
    tooltip: {
      show: true,
      trigger: 'item',   // 觸發型別
      textStyle: {
        color: '#666'
      }
    }
  },
  //  ------  X軸 ------
  xAxis: {
    show: true,  // 是否顯示
    position: 'bottom',  // x軸的位置
    offset: 0, // x軸相對於預設位置的偏移
    type: 'category',   // 軸型別, 預設為 'category'
    name: '月份',    // 軸名稱
    nameLocation: 'end',  // 軸名稱相對位置
    nameTextStyle: {   // 座標軸名稱樣式
      color: 'red',
      padding: [5, 0, 0, -5]
    },
    nameGap: 15, // 座標軸名稱與軸線之間的距離
    nameRotate: 0,  // 座標軸名字旋轉
    axisLine: {       // 座標軸 軸線
      show: true,  // 是否顯示
      symbol: ['none', 'arrow'],  // 是否顯示軸線箭頭
      symbolSize: [8, 8], // 箭頭大小
      symbolOffset: [0, 7],  // 箭頭位置
      // ------   線 ---------
      lineStyle: {
        color: 'blue',
        width: 1,
        type: 'solid'
      }
    },
    axisTick: {    // 座標軸 刻度
      show: true,  // 是否顯示
      inside: true,  // 是否朝內
      length: 3,     // 長度
      lineStyle: {   // 預設取軸線的樣式
        color: 'red',
        width: 1,
        type: 'solid'
      }
    },
    axisLabel: {    // 座標軸標籤
      show: true,  // 是否顯示
      inside: false, // 是否朝內
      rotate: 0, // 旋轉角度
      margin: 5, // 刻度標籤與軸線之間的距離
      color: 'red'  // 預設取軸線的顏色 
    },
    splitLine: {    // gird區域中的分割線
      show: false,  // 是否顯示
      lineStyle: {
        // color: 'red',
        // width: 1,
        // type: 'solid'
      }
    },
    splitArea: {    // 網格區域
      show: false  // 是否顯示,預設為false
    },
    data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
  },
  //   ------   y軸  ----------
  yAxis: {
    show: true,  // 是否顯示
    position: 'left', // y軸位置
    offset: 0, // y軸相對於預設位置的偏移
    type: 'value',  // 軸型別,預設為 ‘category’
    name: '銷量',   // 軸名稱
    nameLocation: 'end', // 軸名稱相對位置value
    nameTextStyle: {    // 座標軸名稱樣式
      color: '#fff',
      padding: [5, 0, 0, 5]  // 座標軸名稱相對位置
    },
    nameGap: 15, // 座標軸名稱與軸線之間的距離
    nameRotate: 270,  // 座標軸名字旋轉

    axisLine: {    // 座標軸 軸線
      show: true,  // 是否顯示
      //  -----   箭頭 -----
      symbol: ['none', 'arrow'],  // 是否顯示軸線箭頭
      symbolSize: [8, 8],  // 箭頭大小
      symbolOffset: [0, 7], // 箭頭位置

      // ----- 線 -------
      lineStyle: {
        color: 'blue',
        width: 1,
        type: 'solid'
      }
    },
    axisTick: {      // 座標軸的刻度
      show: true,    // 是否顯示
      inside: true,  // 是否朝內
      length: 3,      // 長度
      lineStyle: {
        color: 'red',  // 預設取軸線的顏色
        width: 1,
        type: 'solid'
      }
    },
    axisLabel: {      // 座標軸的標籤
      show: true,    // 是否顯示
      inside: false,  // 是否朝內
      rotate: 0,     // 旋轉角度
      margin: 8,     // 刻度標籤與軸線之間的距離
      color: 'red',  // 預設軸線的顏色
    },
    splitLine: {    // gird 區域中的分割線
      show: true,   // 是否顯示
      lineStyle: {
        color: '#666',
        width: 1,
        type: 'dashed'
      }
    },
    splitArea: {     // 網格區域
      show: false   // 是否顯示,預設為false
    }
  },
  //  -------   內容資料 -------
  series: [
    {
      name: '銷量',      // 序列名稱
      type: 'bar',      // 型別
      legendHoverLink: true,  // 是否啟用圖列 hover 時的聯動高亮
      label: {   // 圖形上的文字標籤
        show: false,
        position: 'insideTop', // 相對位置
        rotate: 0,  // 旋轉角度
        color: '#eee'
      },
      itemStyle: {    // 圖形的形狀
        color: 'blue',
        barBorderRadius: [18, 18, 0 ,0]
      },
      barWidth: 20,  // 柱形的寬度
      barCategoryGap: '20%',  // 柱形的間距
      data: [3000, 4000, 4200, 4500, 6000, 5600, 4500, 5020, 4500, 5400, 4300, 1200]
    }
  ]
};

html程式碼如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <script src="./echarts4.x.js"></script>
    <script type="text/javascript" src="./zhuzhangtu.js"></script>
</head>
<body>
    <!-- 為ECharts準備一個具備大小(寬高)的Dom -->
    <div id="main" style="width: 600px;height:400px;margin: 0 auto"></div>
    <script type="text/javascript">
        // 基於準備好的dom,初始化echarts例項
        var myChart = echarts.init(document.getElementById('main'));
        // 使用剛指定的配置項和資料顯示圖表。
        myChart.setOption(option);
    </script>
</body>
</html>

2. 如何做摺疊柱狀圖?

比如如下效果的:

所有的基本配置如下:

// 指定圖表的配置項和資料  
option = {  
  title: {  
    text: "",  
    textStyle: {    
      color: "#436EEE",    
      fontSize: 17    
    }    
  },
  tooltip: {
    trigger: 'axis',
    axisPointer: {
      type: 'shadow'
    }
  },  
  legend: {  
    data:[
      {
        name: '政策法規',
        icon: 'circle',
        textStyle: {
          color: 'red',  // 單獨設定某一個圖列的顏色
          backgroundColor: '#fff' // 單獨設定某一個圖列的字型背景色
        }
      },
      {
        name: '經辦規程',
        icon: 'circle',
        textStyle: {
          color: 'red',  // 單獨設定某一個圖列的顏色
          backgroundColor: '#fff' // 單獨設定某一個圖列的字型背景色
        }
      },
      {
        name: '業務場景模擬',
        icon: 'circle',
        textStyle: {
          color: 'red',  // 單獨設定某一個圖列的顏色
          backgroundColor: '#fff' // 單獨設定某一個圖列的字型背景色
        }
      },
      {
        name: '常見問題',
        icon: 'circle',
        textStyle: {
          color: 'red',  // 單獨設定某一個圖列的顏色
          backgroundColor: '#fff' // 單獨設定某一個圖列的字型背景色
        }
      }
    ]  
  },  
  //x軸顯示  
  xAxis: {  
    data: [20180611, 20180612, 20180613, 20180614, 20180615, 20180616, 20180617],
    show: true,  // 是否顯示
    position: 'bottom',  // x軸的位置
    offset: 0, // x軸相對於預設位置的偏移
    type: 'category',   // 軸型別, 預設為 'category'
    name: '月份',    // 軸名稱
    nameLocation: 'end',  // 軸名稱相對位置
    nameTextStyle: {   // 座標軸名稱樣式
      color: 'red',
      padding: [5, 0, 0, -5]
    },
    nameGap: 15, // 座標軸名稱與軸線之間的距離
    nameRotate: 0,  // 座標軸名字旋轉
    axisLine: {       // 座標軸 軸線
      show: true,  // 是否顯示
      symbol: ['none', 'arrow'],  // 是否顯示軸線箭頭
      symbolSize: [8, 8], // 箭頭大小
      symbolOffset: [0, 7],  // 箭頭位置
      // ------   線 ---------
      lineStyle: {
        color: 'blue',
        width: 1,
        type: 'solid'
      }
    },
    axisTick: {    // 座標軸 刻度
      show: true,  // 是否顯示
      inside: true,  // 是否朝內
      length: 3,     // 長度
      lineStyle: {   // 預設取軸線的樣式
        color: 'red',
        width: 1,
        type: 'solid'
      }
    },
    axisLabel: {    // 座標軸標籤
      show: true,  // 是否顯示
      inside: false, // 是否朝內
      rotate: 0, // 旋轉角度
      margin: 5, // 刻度標籤與軸線之間的距離
      color: 'red'  // 預設取軸線的顏色 
    },
    splitLine: {    // gird區域中的分割線
      show: false,  // 是否顯示
      lineStyle: {
        // color: 'red',
        // width: 1,
        // type: 'solid'
      }
    },
    splitArea: {    // 網格區域
      show: false  // 是否顯示,預設為false
    },
    // show: false  
  }, 
  //   ------   y軸  ----------
  yAxis: {
    show: true,  // 是否顯示
    position: 'left', // y軸位置
    offset: 0, // y軸相對於預設位置的偏移
    type: 'value',  // 軸型別,預設為 ‘category’
    name: '銷量',   // 軸名稱
    nameLocation: 'end', // 軸名稱相對位置value
    nameTextStyle: {    // 座標軸名稱樣式
      color: '#fff',
      padding: [5, 0, 0, 5]  // 座標軸名稱相對位置
    },
    nameGap: 15, // 座標軸名稱與軸線之間的距離
    nameRotate: 270,  // 座標軸名字旋轉

    axisLine: {    // 座標軸 軸線
      show: true,  // 是否顯示
      //  -----   箭頭 -----
      symbol: ['none', 'arrow'],  // 是否顯示軸線箭頭
      symbolSize: [8, 8],  // 箭頭大小
      symbolOffset: [0, 7], // 箭頭位置

      // ----- 線 -------
      lineStyle: {
        color: 'blue',
        width: 1,
        type: 'solid'
      }
    },
    axisTick: {      // 座標軸的刻度
      show: true,    // 是否顯示
      inside: true,  // 是否朝內
      length: 3,      // 長度
      lineStyle: {
        color: 'red',  // 預設取軸線的顏色
        width: 1,
        type: 'solid'
      }
    },
    axisLabel: {      // 座標軸的標籤
      show: true,    // 是否顯示
      inside: false,  // 是否朝內
      rotate: 0,     // 旋轉角度
      margin: 8,     // 刻度標籤與軸線之間的距離
      color: 'red',  // 預設軸線的顏色
    },
    splitLine: {    // gird 區域中的分割線
      show: true,   // 是否顯示
      lineStyle: {
        color: '#666',
        width: 1,
        type: 'dashed'
      }
    },
    splitArea: {     // 網格區域
      show: false   // 是否顯示,預設為false
    }
  }, 
  tooltip: {
    position: ['50%', '50%'],
    padding: [5, 10]
  },
  grid: {
    left: '0%'
  },
  series: [  
    {  
      name: "政策法規",  
      type: "bar",  
      stack: "業務",//摺疊顯示  
      data: ["87.54", "88.54", "90", "91", "92", '95', '100'],
      barWidth : 25, 
      //顯示顏色  
      itemStyle:{    
        normal:{color:"blue"}    
      },
      label: {   // 圖形上的文字標籤
        show: false,
        position: 'insideTop', // 相對位置
        rotate: 0,  // 旋轉角度
        color: '#eee'
      }
    },  
   {  
     name: "經辦規程",  
     type: "bar",  
     stack: "業務",  
     data: ["87.54", "88.54", "90", "91", "92", '95', '100'], 
     barWidth : 25,
     label: {   // 圖形上的文字標籤
        show: false,
        position: 'insideTop', // 相對位置
        rotate: 0,  // 旋轉角度
        color: '#eee'
      },  
     itemStyle:{    
       normal:{color:"#FF8849"}    
     }
   },  
   {  
     name: "業務場景模擬",  
     type: "bar",  
     stack: "業務",  
     data: ["87.54", "88.54", "90", "91", "92", '95', '100'],
     barWidth : 25, 
     label: {   // 圖形上的文字標籤
        show: false,
        position: 'insideTop', // 相對位置
        rotate: 0,  // 旋轉角度
        color: '#eee'
      },
     itemStyle:{    
       normal:{color:"#3FBB49"}    
     } 
   },  
   {  
     name: "常見問題",  
     type: "bar",  
     stack: "業務",  
     data: ["87.54", "88.54", "90", "91", "92", '95', '100'],
     barWidth : 25, 
     label: {   // 圖形上的文字標籤
        show: false,
        position: 'insideTop', // 相對位置
        rotate: 0,  // 旋轉角度
        color: '#eee'
      },
     itemStyle:{    
       normal:{color:"#56C4A5"}    
     },
     barCateGoryGap: 15
   }  
  ]  
};

HTML程式碼如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <script src="./echarts4.x.js"></script>
    <script type="text/javascript" src="./histogram.js"></script>
</head>
<body>
    <!-- 為ECharts準備一個具備大小(寬高)的Dom -->
    <div id="main" style="width: 600px;height:400px;margin: 0 auto"></div>
    <script type="text/javascript">
        // 基於準備好的dom,初始化echarts例項
        var myChart = echarts.init(document.getElementById('main'));

        // 使用剛指定的配置項和資料顯示圖表。
        myChart.setOption(option);
        myChart.on('click', function (params) {
            // 控制檯列印資料的名稱
            console.log(params);
        });
    </script>
</body>
</html>

相關文章