ECharts之阶梯瀑布柱状图

效果图

在这里插入图片描述

背景图片

下载ECharts

npm install echarts --save

引入并注册全局ECharts

    在 main.js 文件里引入并注册 ( 这里是 Vue3.0 的模板 )

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

import echarts from 'echarts'
Vue.prototype.$echarts = echarts

Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

在组件中使用ECharts

<template>
  <div class='wrapper'>
    <div class='chart' id='chart'></div>
  </div>
</template>

<script>
export default {
  data () {
    return {}
  },
  mounted () {
    this.drawChart()
  },
  methods: {
    drawChart () {
      // 基于准备好的dom,初始化echarts实例
      let chart = this.$echarts.init(document.getElementById('chart'))
      // 监听屏幕变化自动缩放图表
      window.addEventListener('resize', function () { chart.resize() })
      // 绘制图表
      chart.setOption({
        // 设置图表的位置
        grid: {
          x: 40, // 左间距
          x2: 40, // 右间距
          y: 80, // 上间距
          y2: 30, // 下间距
          // grid 区域是否包含坐标轴的刻度标签
          // 这常用于『防止标签溢出』的场景,标签溢出指的是,标签长度动态变化时,
          // 可能会溢出容器或者覆盖其他组件
          containLabel: true 
        },
        // dataZoom 组件 用于区域缩放
        dataZoom: [{
          type: 'inside',
          xAxisIndex: [0], // 设置 dataZoom-inside 组件控制的 x轴
          // 数据窗口范围的起始和结束百分比  范围: 0 ~ 100
          start: 0,
          end: 100
        }],
        // 图表主标题
        title: {
          text: '总销售额', // 主标题文本,支持使用 \n 换行
          top: 20, // 定位 值: 'top', 'middle', 'bottom' 也可以是具体的值或者百分比
          left: 'center', // 值: 'left', 'center', 'right' 同上
          textStyle: { // 文本样式
            fontSize: 24,
            fontWeight: 600,
            color: '#fff'
          }
        },
        // 提示框组件
        tooltip: {
          trigger: 'axis', // 触发类型, axis: 坐标轴触发
          textStyle: {
            fontSize: 14,
            color: '#d5dbff' // 文字颜色
          },
          // 提示框浮层内容格式器,支持字符串模板和回调函数两种形式
          // 折线(区域)图、柱状(条形)图、K线图 : {a}(系列名称),{b}(类目值),{c}(数值), {d}(无)
          formatter: '{b1}: {c1}万'
        },
        // X轴
        xAxis: {
          type: 'category', // 坐标轴类型,  'category' 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据
          // 坐标轴轴线
          axisLine: {
            lineStyle: {
              type: 'solid', // 坐标轴线线的类型 'solid', 'dashed', 'dotted'
              color: '#676e88' // 坐标轴线线的颜色
            }
          },
          // 坐标轴刻度
          axisTick: {
            show: false
          },
          // 分隔线
          splitLine: {
            show: false
          },
          // 坐标轴刻度标签
          axisLabel: {
            fontSize: 14, // 文字的字体大小
            color: '#95B3D5', // 刻度标签文字的颜色
            // 使用函数模板   传入的数据值 -> value: number|Array,
            formatter: function (params) {
              var newParamsName = ''
              var paramsNameNumber = params.length
              var provideNumber = 4
              var rowNumber = Math.ceil(paramsNameNumber / provideNumber)
              if (paramsNameNumber > provideNumber) {
                for (var p = 0; p < rowNumber; p++) {
                  var tempStr = ''
                  var start = p * provideNumber
                  var end = start + provideNumber
                  if (p === rowNumber - 1) {
                    tempStr = params.substring(start, paramsNameNumber)
                  } else {
                    tempStr = params.substring(start, end) + '\n'
                  }
                  newParamsName += tempStr
                }
              } else {
                newParamsName = params
              }
              return newParamsName
            }
          },
          // 类目数据,在类目轴(type: 'category')中有效
          data: ['衬衫总销售额', '裤子总销售额', '外套总销售额', '当年总销售额', '预计总销售额']
        },
        // Y轴
        yAxis: {
          type: 'value', // 坐标轴类型,   'value' 数值轴,适用于连续数据
          // 坐标轴在图表区域中的分隔线
          splitLine: {
            show: true, // 是否显示分隔线, 默认数值轴显示
            lineStyle: {
              type: 'dashed', // 坐标轴线线的类型 'solid', 'dashed', 'dotted'
              color: '#5d6e8c'
            }
          },
          // 坐标轴轴线
          axisLine: {
            show: false
          },
          // 坐标轴刻度
          axisTick: {
            show: false
          },
          // 坐标轴刻度标签
          axisLabel: {
            show: false
          }
        },
        series: [{
          type: 'bar', // 系列类型
          name: '辅助', // 系列名称, 用于tooltip的显示, legend 的图例筛选
          // 数据堆叠,同个类目轴上系列配置相同的stack值后,后一个系列的值会在前一个系列的值上相加
          stack: '金额',
          // 图形样式
          itemStyle: {
            normal: {
              color: 'rgba(0,0,0,0)' // 柱条的颜色
            }
          },
          data: [0, 1000, 3000, 0, 2000] // 系列中的数据内容数组
        }, {
          type: 'bar', // 系列类型
          name: '运营管理', // 系列名称, 用于tooltip的显示, legend 的图例筛选
          // 数据堆叠,同个类目轴上系列配置相同的stack值后,后一个系列的值会在前一个系列的值上相加
          stack: '金额',
          barMaxWidth: 50, // 柱条的最大宽度,不设时自适应
          // 图形的样式
          itemStyle: {
            normal: {
              color: '#4482AD', // 柱条的颜色
              barBorderRadius: [20, 20, 0, 0] // 圆角半径, 单位px, 支持传入数组分别指定 4 个圆角半径
            }
          },
          // 图形上的文本标签
          label: {
            normal: {
              show: true,
              position: 'top', // 文本标签的位置
              fontSize: 14, // 字体大小
              color: '#4482AD', // 字体颜色
              // 使用字符串模板,模板变量为刻度默认标签 {value}
              formatter: '{c0}万'
            }
          },
          // 系列中的数据内容数组
          data: [1000, 2000, 3000, {
            value: 6000,
            itemStyle: {
              normal: {
                color: '#80FFFF',
                barBorderRadius: [0, 0, 0, 0]
              }
            }
          }, {
            value: 4000,
            label: {
              normal: {
                position: 'bottom'
              }
            },
            itemStyle: {
              normal: {
                color: '#4482AD',
                barBorderRadius: [0, 0, 18, 18]
              }
            }
          }]
        }]
      })
    }
  }
}
</script>

<style scoped>
.wrapper {
  width: 100%;
}
.wrapper .chart {
  width: 60%;
  height: 450px;
  margin: 100px auto 0;
  background: url(../../public/static/bg.png) no-repeat;
  background-size: 100% 100%;
}
</style>
  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要在 ECharts 中将一个阶梯折线图和两个柱状图合并在一起显示,你可以按照以下步骤进行操作: 1. 引入 ECharts 库 首先,确保你已经引入了 ECharts 库文件。可以从官方网站下载并引入相应的 JavaScript 文件。 2. 创建一个容器 在 HTML 文件中创建一个容器元素,用于显示图表。例如: ```html <div id="chartContainer" style="width: 800px; height: 400px;"></div> ``` 3. 初始化图表 在 JavaScript 文件中,使用以下代码初始化图表: ```javascript // 创建图表实例 var chart = echarts.init(document.getElementById('chartContainer')); // 设置图表的配置项和数据 var option = { // 阶梯折线图配置 series: [{ type: 'line', step: 'start', data: [120, 132, 101, 134, 90, 230, 210] }], // 柱状图配置 xAxis: [ { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] } ], yAxis: [ { type: 'value' } ], series: [ { type: 'bar', data: [10, 52, 200, 334, 390, 330, 220] }, { type: 'bar', data: [50, 22, 100, 134, 190, 130, 120] } ] }; // 使用配置项和数据绘制图表 chart.setOption(option); ``` 在这个示例中,`series` 中的第一个对象表示阶梯折线图的配置,`series` 中的后两个对象表示两个柱状图的配置。你可以根据需要调整数据和配置项。 4. 渲染图表 使用 `setOption()` 方法将配置项和数据传递给图表实例,以渲染图表。 这样,你就可以在 ECharts 中将一个阶梯折线图和两个柱状图合并在一起显示了。根据你的需求,可以进一步自定义图表的样式和交互行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半度℃温热

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值