跳至主要內容

6.柱状图

约 2198 字大约 7 分钟...

6.柱状图

  • 常见效果

    • 标记

      • markPoint:标记点(最大值,最小值)
      • markLine:标记线(平均值)
    • 显示

      • label:数值显示
      • barWidth:柱宽度
      • 调换x轴y轴实现横向柱状图

6.1柱状图图表(两大步骤)

  • 官网找到类似实例, 适当分析,并且引入到HTML页面中
  • 根据需求定制图表

6.2找官网实例

引入到html页面中

// 柱状图1模块
(function() {
  // 实例化对象
  let myChart = echarts.init(document.querySelector(".bar .chart"));
  // 指定配置和数据
  let option = {
    color: ["#3398DB"],
    tooltip: {
      trigger: "axis",
      axisPointer: {
        // 坐标轴指示器,坐标轴触发有效
        type: "shadow" // 默认为直线,可选为:'line' | 'shadow'
      }
    },
    grid: {
      left: "3%",
      right: "4%",
      bottom: "3%",
      containLabel: true
    },
    xAxis: [
      {
        type: "category",
        data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
        axisTick: {
          alignWithLabel: true
        }
      }
    ],
    yAxis: [
      {
        type: "value"
      }
    ],
    series: [
      {
        name: "直接访问",
        type: "bar",
        barWidth: "60%",
        data: [10, 52, 200, 334, 390, 330, 220]
      }
    ]
  };

  // 把配置给实例对象
  myChart.setOption(option);
})();

6.3根据需求定制

根据需求定制

  • 修改图表柱形颜色 #2f89cf

    • 修改图表大小 top 为 10px bottom 为 4% grid决定我们的柱状图的大小
    // color设置我们线条的颜色 注意后面是个数组
       color: ['#2f89cf'],
    // 网格配置  grid可以控制线形图 柱状图 图表离上下左右边的距离
       grid: {
         left: '0%',
         top: '10px',
         right: '0%',
         bottom: '4%',
         // 是否显示刻度标签 如果是true 就显示 否则反之
         containLabel: true,
       },
    
    • X轴相关设置 xAxis
      • 文本颜色设置为 rgba(255,255,255,.6) 字体大小为 12px
      • X轴线的样式 不显示
    // 设置x轴标签文字样式
    // x轴的文字颜色和大小
         axisLabel: {
           color: "rgba(255,255,255,.6)",
           fontSize: "12"
         },
       //  坐标轴轴线相关设置。
       axisLine: {
         // 是否显示坐标轴轴线。
         show: false,
         // 如果想要设置单独的线条样式
         lineStyle: {
           color: 'rgba(255,255,255,.1)',
           width: 1,
           type: 'solid',
         },
       },
    
    • Y 轴相关定制
      • 文本颜色设置为 rgba(255,255,255,.6) 字体大小为 12px
      • Y 轴线条样式 更改为 1像素的 rgba(255,255,255,.1) 边框
      • 分隔线的颜色修饰为 1像素的 rgba(255,255,255,.1)
         // 修改刻度标签 相关样式
         axisLabel: {
           color: 'rgba(255,255,255,.6) ',
           fontSize: 12,
         },
         // y轴坐标轴的线条改为了 2像素
         axisLine: {
           lineStyle: {
             color: 'rgba(255,255,255,.1)',
             width: 2,
           },
         },
         // y轴分割线的颜色
         splitLine: {
           lineStyle: {
             color: 'rgba(255,255,255,.1)',
           },
         },
    
    • 修改柱形为圆角以及柱子宽度 series 里面设置

// 线的数据 series: [ { // 移入提示文字 name: '直接访问', type: 'bar', // 柱子的宽度 barWidth: '35%', // 数据 data: [200, 300, 300, 900, 1500, 1200, 600], itemStyle: { // 修改柱子圆角 barBorderRadius: 5, }, }, ],


- 更换对应数据

~~~JavaScript
// x轴中更换data数据
data: [ "旅游行业","教育培训", "游戏行业", "医疗行业", "电商行业", "社交行业", "金融行业" ],
// series 更换数据
data: [200, 300, 300, 900, 1500, 1200, 600]
  • 让图表跟随屏幕自适应
  window.addEventListener("resize", function() {
    myChart.resize();
  });

完整代码

// 柱形图1
(function () {
  // 实例化对象
  const barEchart = echarts.init(document.querySelector('.bar>.chart'));
  // 指定配置和数据
  const barOptions = {
    // color设置我们线条的颜色 注意后面是个数组
    color: ['#2f89cf'],
    // 图表的提示框组件
    tooltip: {
      // 触发方式
      trigger: 'axis',
      axisPointer: {
        // 坐标轴指示器,坐标轴触发有效
        type: 'shadow', // 默认为直线,可选为:'line' | 'shadow'
      },
    },
    // 网格配置  grid可以控制线形图 柱状图 图表离上下左右边的距离
    grid: {
      left: '0%',
      top: '10px',
      right: '0%',
      bottom: '4%',
      // 是否显示刻度标签 如果是true 就显示 否则反之
      containLabel: true,
    },
    // 设置x轴的相关配置
    xAxis: {
      // 坐标轴类型 类目轴,适用于离散的类目数据
      type: 'category',
      /*
      类目数据,在类目轴(type: 'category')中有效。
      如果没有设置 type,但是设置了 axis.data,则认为 type 是 'category'。
      */
      data: ['旅游行业', '教育培训', '游戏行业', '医疗行业', '电商行业', '社交行业', '金融行业'],
      // 是否让我们的线条和坐标轴有缝隙
      boundaryGap: true,
      // 坐标轴刻度相关设置。
      axisTick: {
        // 类目轴中在 boundaryGap 为 true 的时候有效,可以保证刻度线和标签对齐。
        alignWithLabel: true,
      },
      // 修改刻度标签 相关样式
      axisLabel: {
        color: 'rgba(255,255,255,.6) ',
        fontSize: '10',
      },
      //  坐标轴轴线相关设置。
      axisLine: {
        // 是否显示坐标轴轴线。
        show: false,
        // 如果想要设置单独的线条样式
        lineStyle: {
          color: 'rgba(255,255,255,.1)',
          width: 1,
          type: 'solid',
        },
      },
    },
    yAxis: [
      {
        type: 'value',
        // 修改刻度标签 相关样式
        axisLabel: {
          color: 'rgba(255,255,255,.6) ',
          fontSize: 12,
        },
        // y轴坐标轴的线条改为了 2像素
        axisLine: {
          lineStyle: {
            color: 'rgba(255,255,255,.1)',
            width: 2,
          },
        },
        // y轴分割线的颜色
        splitLine: {
          lineStyle: {
            color: 'rgba(255,255,255,.1)',
          },
        },
      },
    ],
    series: [
      {
        // 移入提示文字
        name: '直接访问',
        type: 'bar',
        // 柱子的宽度
        barWidth: '35%',
        // 数据
        data: [200, 300, 300, 900, 1500, 1200, 600],
        itemStyle: {
          // 修改柱子圆角
          barBorderRadius: 5,
        },
      },
    ],
  };
  // 把配置给实例对象
  barEchart.setOption(barOptions);
  window.addEventListener('resize', _ => barEchart.resize());
})();
image-20220728230034650

6.4柱状图2定制

  • 官网找到类似实例, 适当分析,并且引入到HTML页面中
  • 根据需求定制图表

需求1: 修改图形大小 grid

  // 图标位置
    grid: {
      top: "10%",
      left: "22%",
      bottom: "10%"
    },

需求2: 不显示x轴

   xAxis: {
      show: false
    },

需求3: y轴相关定制

  • 不显示y轴线和相关刻度
//不显示y轴线条
axisLine: {
    show: false
        },
// 不显示刻度
axisTick: {
   show: false
},
  • y轴文字的颜色设置为白色
   axisLabel: {
          color: "#fff"
   },

需求4: 修改第一组柱子相关样式(条状)

name: "条",
// 柱子之间的距离
barCategoryGap: 50,
//柱子的宽度
barWidth: 10,
// 柱子设为圆角
itemStyle: {
    normal: {
      barBorderRadius: 20,       
    }
},
  • 设置第一组柱子内百分比显示数据
// 图形上的文本标签
label: {
    normal: {
         show: true,
         // 图形内显示
         position: "inside",
         // 文字的显示格式
         formatter: "{c}%"
     }
},
  • 设置第一组柱子不同颜色
// 声明颜色数组
var myColor = ["#1089E7", "#F57474", "#56D0E3", "#F8B448", "#8B78F6"];
// 2. 给 itemStyle  里面的color 属性设置一个 返回值函数
  itemStyle: {
          normal: {
            barBorderRadius: 20,  
            // params 传进来的是柱子对象
            console.log(params);
            // dataIndex 是当前柱子的索引号
            return myColor[params.dataIndex];
          }
         
},

需求5: 修改第二组柱子的相关配置(框状)

  	    name: "框",
        type: "bar",
        barCategoryGap: 50,
        barWidth: 15,
        itemStyle: {
            color: "none",
            borderColor: "#00c1de",
            borderWidth: 3,
            barBorderRadius: 15
        },
        data: [19325, 23438, 31000, 121594, 134141, 681807]
      }

需求6: 给y轴添加第二组数据

yAxis: [
      {
      type: "category",
      data: ["印尼", "美国", "印度", "中国", "世界人口(万)"],
      // 不显示y轴的线
      axisLine: {
        show: false
      },
      // 不显示刻度
      axisTick: {
        show: false
      },
      // 把刻度标签里面的文字颜色设置为白色
      axisLabel: {
        color: "#fff"
      }
    },
      {
        show: true,
        data: [702, 350, 610, 793, 664],
           // 不显示y轴的线
      axisLine: {
        show: false
      },
      // 不显示刻度
      axisTick: {
        show: false
      },
        axisLabel: {
          textStyle: {
            fontSize: 12,
            color: "#fff"
          }
        }
      }
    ],

需求7: 设置两组柱子层叠以及更换数据

// 给series  第一个对象里面的 添加 
// 控制当前数据使用哪一个y轴
// 左边的y坐标轴的索引是0
// 右边边的y坐标轴的索引是1
yAxisIndex: 0,
// 给series  第二个对象里面的 添加 
yAxisIndex: 1,
// series 第一个对象里面的data
data: [70, 34, 60, 78, 69],
// series 第二个对象里面的data
data: [100, 100, 100, 100, 100],
// y轴更换第一个对象更换data数据
data: ["HTML5", "CSS3", "javascript", "VUE", "NODE"],
// y轴更换第二个对象更换data数据
data:[702, 350, 610, 793, 664],

完整代码

var myColor = ['#1089E7', '#F57474', '#56D0E3', '#F8B448', '#8B78F6'];
  // 1. 实例化对象
  var myChart = echarts.init(document.querySelector('.bar2 .chart'));
  // 2. 指定配置和数据
  var option = {
    grid: {
      top: '10%',
      left: '22%',
      bottom: '10%',
      // containLabel: true,
    },
    // 不显示x轴的相关信息
    xAxis: {
      show: false,
    },
    yAxis: [
      {
        type: 'category',
        // 数据反转
        inverse: true,
        data: ['HTML5', 'CSS3', 'javascript', 'VUE', 'NODE'],
        // 不显示y轴的线
        axisLine: {
          show: false,
        },
        // 不显示刻度
        axisTick: {
          show: false,
        },
        // 把刻度标签里面的文字颜色设置为白色
        axisLabel: {
          color: '#fff',
        },
      },
      {
        data: [702, 350, 610, 793, 664],
        inverse: true,
        // 不显示y轴的线
        axisLine: {
          show: false,
        },
        // 不显示刻度
        axisTick: {
          show: false,
        },
        // 把刻度标签里面的文字颜色设置为白色
        axisLabel: {
          color: '#fff',
        },
      },
    ],
    series: [
      {
        name: '条',
        type: 'bar',
        data: [70, 34, 60, 78, 69],
        // yAxisIndex: 0,
        // 修改第一组柱子的圆角
        itemStyle: {
          barBorderRadius: 20,
          // 此时的color 可以修改柱子的颜色
          color: params => myColor[params.dataIndex],
          // params 传进来的是柱子对象
          // console.log(params);
          // dataIndex 是当前柱子的索引号
        },
        // 柱子之间的距离
        barCategoryGap: 50,
        //柱子的宽度
        barWidth: 10,
        // 显示柱子内的文字
        label: {
          show: true,
          position: 'inside',
          // {c} 会自动的解析为 数据  data里面的数据
          formatter: '{c}%',
        },
      },
      {
        name: '框',
        type: 'bar',
        barCategoryGap: 50,
        barWidth: 15,
        yAxisIndex: 1,
        data: [100, 100, 100, 100, 100],
        itemStyle: {
          color: 'none',
          borderColor: '#00c1de',
          borderWidth: 3,
          barBorderRadius: 15,
        },
      },
    ],
  };

  // 3. 把配置给实例对象
  myChart.setOption(option);
  // 4. 让图表跟随屏幕自动的去适应
  window.addEventListener('resize', function () {
    myChart.resize();
  });
image-20220729153320110
image-20220729153320110
已到达文章底部,欢迎留言、表情互动~
  • 赞一个
    0
    赞一个
  • 支持下
    0
    支持下
  • 有点酷
    0
    有点酷
  • 啥玩意
    0
    啥玩意
  • 看不懂
    0
    看不懂
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.8