Skip to content

带有渐变色的柱状图

vue
<template>
  <div ref="rangeMap" />
</template>

<script>
import * as echarts from 'echarts';

export default {
  name: 'RangeMap',
  data() {
    return {
      mapData: {},
      myChart: null,
    }
  },
  mounted() {
    this.$nextTick(() => {
      this.initEchart();
    })

  },
  methods: {
    initEchart() {
      let ydata = ['A市', 'B市', 'C市', 'D市', 'E市', 'F市'];
      let xdata = [12, 13, 14, 15, 16, 17];

      this.myChart = echarts.init(this.$refs.rangeMap)
      this.myChart.setOption({
        title: {
          text: '排行榜',
          left: 'center'
        },
        tooltip: {
          trigger: "axis",
        },
        grid: {
          left: "100",
          right: "20",
          bottom: "10",
          top: "20",
          containLabel: false,
        },
        xAxis: {
          type: "value",
          show: false,
        },
        yAxis: {
          type: "category",
          data: ydata,
          axisLine: {
            show: false,
          },
          axisTick: {
            show: false,
          },
          axisLabel: {
            margin: 100,
            width: 120,
            align: "left",
            overflow: "truncate",
            formatter: function (value, index) {
              let ind = index + 1;
              if (ind == ydata.length) {
                return "{one|" + (ydata.length - index) + "} {a|" + value + "}";
              } else if (ind + 1 == ydata.length) {
                return "{two|" + (ydata.length - index) + "} {b|" + value + "}";
              } else if (ind + 2 == ydata.length) {
                return (
                  "{three|" + (ydata.length - index) + "} {c|" + value + "}"
                );
              }
              if (ydata.length - index > 9) {
                return (
                  "{five|" + (ydata.length - index) + "} {d|" + value + "}"
                );
              }
              return "{four|" + (ydata.length - index) + "} {d|" + value + "}";
            },
            rich: {
              a: {
                color: "#59c9f9",
              },
              b: {
                color: "#59c9f9",
              },
              c: {
                color: "#59c9f9",
              },
              d: {
                color: "#59c9f9",
              },
              // 第一名
              one: {
                backgroundColor: "#E86452",
                color: "white",
                width: 12,
                height: 16,
                padding: [1, 0, 0, 5],
                borderRadius: 10,
                fontSize: 11,
              },
              // 第二名
              two: {
                backgroundColor: "#FF9845",
                color: "white",
                width: 12,
                height: 16,
                padding: [1, 0, 0, 5],
                borderRadius: 10,
                fontSize: 11,
              },
              // 第三名
              three: {
                backgroundColor: "#F6BD16",
                color: "white",
                width: 12,
                height: 16,
                padding: [1, 0, 0, 5],
                borderRadius: 10,
                fontSize: 11,
              },
              // 一位数
              four: {
                backgroundColor: "rgba(0,0,0,0.15)",
                color: "white",
                width: 12,
                height: 16,
                padding: [1, 0, 0, 5],
                borderRadius: 10,
                fontSize: 11,
              },
              // 两位数
              five: {
                backgroundColor: "rgba(0,0,0,0.15)",
                color: "white",
                width: 16,
                height: 16,
                padding: [1, 0, 0, 1],
                borderRadius: 10,
                fontSize: 11,
              },
            },
          },
        },
        series: [{
          type: "bar",
          showBackground: true,
          label: {
            show: true,
            position: "right",
            color: "rgba(0,0,0,0.5)",
          },
          barWidth: 16,
          itemStyle: {
            // color: "#1890FF",
            color: {
              type: "linear",
              x: 0,
              y: 0,
              x2: 1,
              y2: 0,
              colorStops: [
                {
                  offset: 0,
                  color: "#3977E6",
                },
                {
                  offset: 1,
                  color: "#1890FF",
                }
              ]
            },
            borderRadius: 10,
          },
          backgroundStyle: {
            color: "#F6F8FC",
            borderRadius: 10,
          },
          data: xdata,
        },]
      })
    }
  }
}
</script>

<style scoped lang="less"></style>

Released under the ISC License.