Vue2+echarts横向进度条类型颜色渐变柱形图

最近遇到个需求,用图表横向显示数据并且文字要在两边柱形上面,而且柱形要颜色渐变也就是下图所示:

分析一下这个图表的需求,大概为几点:

1.横向柱形图。其实这点不难,x与y轴数据互换一下就可以了。

2.背景有个黑色的总进度条。

3.柱形图两边文字在柱子上方。

4.柱子颜色渐变。

分析完需求,代码如下,每一行都做了注释

drawPowerCharts() {
  let myChart10 = this.$echarts.init(document.getElementById("myCharts"));

  myChart.setOption({
    // 设置图表的选项

    grid: {
      x: 20, // 距离容器左边的距离
      y: 40, // 距离容器上边的距离
      x2: 30, // 距离容器右边的距离
      y2: 20, // 距离容器下边的距离
    },
    // 设置图表的网格样式,即图表距禒容器四边的距禒

    xAxis: {
      type: "value", // x 轴类型为数值型
      show: false, // 不显示 x 轴
    },
    // 设置图表的 x 轴的类型为数值型,并且不显示 x 轴

    tooltip: {
      trigger: "axis", // 触发类型为坐标轴触发
      axisPointer: {
        type: "shadow", // 指示器类型为阴影
      },
    },
    // 配置图表的提示框,当鼠标悬浮在数据点上时显示信息

    yAxis: {
      type: "category", // y 轴类型为类目型
      axisLabel: { show: false }, // 不显示刻度标签
      data: this.yxdata, // 使用传入的数据作为轴数据
      splitLine: {
        show: false, // 不显示分隔线
      },
      axisLine: {
        show: false, // 不显示坐标轴轴线
      },
      axisTick: {
        show: false, // 不显示刻度线
      },
    },
    // 设置图表的 y 轴的类型为类目型,不显示刻度标签,使用传入的数据作为轴数据,同时不显示分隔线、坐标轴轴线和刻度线

    series: [
      {
        type: "bar", // 类型为柱状图
        data: [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100], // 数据
        barWidth: "10px", // 柱条宽度
        barGap: "-100%", // 柱条间距
        itemStyle: {
          barBorderRadius: 10, // 柱条圆角
          color: "#01115E", // 柱条颜色
        },
        label: {
          show: true, // 显示标签
          color: "#fff", // 标签颜色
          formatter: function (params) {
            var labels = [
              "第一个",
              "第二天数",
              "第三",
              "第四",
              "第五代码",
              "第六",
              "第七救赎",
              "第八",
              "第九",
              "第十",
            ];
            return labels[params.dataIndex]; // 返回自定义标签
          },
          position: "right", // 标签位置
          align: "right", // 对齐方式
          offset: [-20, -20], // 偏移量
          valueAnimation: true, // 值动画
        },
      },
      // 这个配置项用来设置图表的背景进度条,数据直接全用了 100

      {
            type: "bar",
            itemStyle: {
              barBorderRadius: 10,
              color: {
                type: "linear",
                x: 0, // 渐变起始点 x 坐标,取值范围为 0 - 1
                y: 0, // 渐变起始点 y 坐标,取值范围为 0 - 1
                x2: 1, // 渐变结束点 x 坐标,取值范围为 0 - 1
                y2: 0, // 渐变结束点 y 坐标,取值范围为 0 - 1
                colorStops: [
                  {
                    offset: 0, // 渐变颜色起始位置的偏移量,取值范围为 0 - 1
                    color: "#143787", // 起始颜色
                  },
                  {
                    offset: 1, // 渐变颜色结束位置的偏移量,取值范围为 0 - 1
                    color: "#12FF3F", // 结束颜色
                  },
                ],
              },
            },
            data: this.axdata.sort((a, b) => a - b),
            barWidth: "10px",
            barGap: "-100%", //设置柱形重合的重要步骤
            label: {
              color: "#5F98CB",
              show: true,
              formatter: "{b}",
              position: "left",
              align: "left",
              offset: [10, -20],
            },
          },
      // 这个配置项用来设置实际数据的柱形条,并设置了颜色、宽度、间距和左侧标签的样式
    ],
  });

},

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
是使用Vue2和Echarts实现立体柱状图的步骤: 1. 首先,需要在Vue项目中安装Echarts。可以使用npm或yarn进行安装,命令如下: ``` npm install echarts --save ``` 或者 ``` yarn add echarts ``` 2. 在Vue组件中引入Echarts,并创建一个Echarts实例: ```javascript import echarts from 'echarts' export default { data() { return { chartData: null } }, mounted() { this.initChart() }, methods: { initChart() { const chartDom = this.$refs.chart const myChart = echarts.init(chartDom) this.chartData = myChart } } } ``` 3. 在模板中添加一个div元素,用于渲染Echarts图表: ```html <template> <div class="chart-container"> <div ref="chart" class="chart"></div> </div> </template> ``` 4. 在Vue组件的方法中,使用Echarts的API创建立体柱状图: ```javascript const option = { tooltip: {}, visualMap: { max: 20, inRange: { color: ['#e0ffff', '#006edd'] } }, xAxis3D: { type: 'category', data: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] }, yAxis3D: { type: 'category', data: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] }, zAxis3D: { type: 'value' }, grid3D: { boxWidth: 200, boxDepth: 80, viewControl: { // projection: 'orthographic' }, light: { main: { intensity: 1.2, shadow: true }, ambient: { intensity: 0.3 } } }, series: [{ type: 'bar3D', data: [ ['A', 'Monday', 10], ['B', 'Monday', 8], ['C', 'Monday', 7], ['D', 'Monday', 6], ['E', 'Monday', 5], ['F', 'Monday', 4], ['G', 'Monday', 3], ['H', 'Monday', 2], ['A', 'Tuesday', 3], ['B', 'Tuesday', 5], ['C', 'Tuesday', 6], ['D', 'Tuesday', 7], ['E', 'Tuesday', 8], ['F', 'Tuesday', 9], ['G', 'Tuesday', 10], ['H', 'Tuesday', 11], ['A', 'Wednesday', 12], ['B', 'Wednesday', 10], ['C', 'Wednesday', 9], ['D', 'Wednesday', 8], ['E', 'Wednesday', 7], ['F', 'Wednesday', 6], ['G', 'Wednesday', 5], ['H', 'Wednesday', 4], ['A', 'Thursday', 5], ['B', 'Thursday', 7], ['C', 'Thursday', 8], ['D', 'Thursday', 9], ['E', 'Thursday', 10], ['F', 'Thursday', 11], ['G', 'Thursday', 12], ['H', 'Thursday', 13], ['A', 'Friday', 15], ['B', 'Friday', 13], ['C', 'Friday', 12], ['D', 'Friday', 11], ['E', 'Friday', 10], ['F', 'Friday', 9], ['G', 'Friday', 8], ['H', 'Friday', 7], ['A', 'Saturday', 4], ['B', 'Saturday', 6], ['C', 'Saturday', 7], ['D', 'Saturday', 8], ['E', 'Saturday', 9], ['F', 'Saturday', 10], ['G', 'Saturday', 11], ['H', 'Saturday', 12], ['A', 'Sunday', 16], ['B', 'Sunday', 14], ['C', 'Sunday', 13], ['D', 'Sunday', 12], ['E', 'Sunday', 11], ['F', 'Sunday', 10], ['G', 'Sunday', 9], ['H', 'Sunday', 8] ], shading: 'lambert', label: { textStyle: { fontSize: 16, borderWidth: 1 } }, itemStyle: { opacity: 0.8 } }] } this.chartData.setOption(option) ``` 这里的option是一个包含Echarts图表配置的对象,其中包括了x轴、y轴、z轴、数据等信息。可以根据实际需求进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值