Vue+Echarts实现3D效果柱状图(仅使用Echarts实现)

本文介绍了如何仅使用Echarts在Vue项目中实现3D效果的圆形柱状图。关键在于设置series属性,结合'pictorialBar'和'bar'类型,以及利用Echarts的渐变色生成器LinearGradient来实现柱体的渐变效果。通过调整配置,可以消除鼠标悬停时显示的重复数据。示例中使用的vue-echarts版本为6.2.3。

只用charts实现3D效果的圆形柱状图

关键属性:
type: “pictorialBar”, // pictorialBar(象形柱图)
type: “bar”, // bar(柱状图)

注: 当鼠标放上现实了三条重复的数据而只想要一条时 注掉此项即可

 tooltip: {
            // trigger: "axis", //把我注掉
            axisPointer: {
              type: "shadow",
            },
          },

效果如下:

2


echarts使用的版本: “vue-echarts”: “^6.2.3”,


实现这种效果主要是: ECharts中的 series 属性,通过两种不同类型的图表组合而成. 其中里面的柱体渐变色是通过
ECharts中内置的渐变色生成器 echarts.graphic.LinearGradient

可以用来设置渐变色.

itemStyle: { // 图形样式
    // echarts.graphic.LinearGradient(echarts内置的渐变色生成器)
    // 4个参数用于配置渐变色的起止位置,这4个参数依次对应右 下 左 上
    color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
       // 这里 offset: 0 1 ,表示从下往上的渐变色
        {
             offset: 0, // 0%处的颜色
             color: "rgba(31,155,255,1)"
        },
        {
             offset: 1, // 100%处的颜色
             color: "rgba(0,229,255,1)"
        }
    ])
 }

在柱状图中我们也可以使用下面来实现渐变色: Documentation - Apache ECharts

itemStyle: { // 图形样式
    // color支持(rgb(255,255,255)、rgba(255,255,255,1)、#fff,也支持渐变色和纹理填充)
    // 下面就是使用线性渐变
    color: {
        "x": 0,
        "y": 0,
        "x2": 0,
        "y2": 1,
        "type": "linear",
        "global": false,
        "colorStops": [{
            "offset": 0, // 0%处的颜色
            "color": "rgba(0,229,255,0.5)"
        },
        {
            "offset": 1, // 100%处的颜色
             "color": "#1F9BFF"
         }]
    }
}

完整代码

<template>
  <div class="contain">
    <div style="width: 500px; height: 500px" id="region"></div>
  </div>
</template>
    
<script>
import * as echarts from "echarts";
export default {
  data() {
    return {};
  },
  mounted() {
    this.test();
  },
  methods: {
    test() {
      var chartDom = document.getElementById("region");
      var myChart = echarts.init(chartDom);
      var option;
      var yData = [10, 52, 200, 334, 390, 330, 220],
        option = {
          backgroundColor: "#000", //整个echarts背景色
          // 头部标题
          title: {
            text: "我是柱状图立体的哦",
            left: "center",
            textStyle: {
              // 标题美化
              color: "red", // 标题颜色--红
            },
            //4.副标题
            subtext: "副标题", //副标题文本样式
            subtextStyle: {
                // 副标题美化
                color: "green", // 标题颜色--红
            },
          },
          tooltip: {
            trigger: "axis",
            axisPointer: {
              type: "shadow",
            },
          },
          grid: {
            left: "3%",
            right: "4%",
            bottom: "3%",
            containLabel: true,
          },
          xAxis: [
            {
              type: "category",
              data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
              axisTick: {
                // 坐标轴刻度相关配置
                alignWithLabel: true, // 是否显示坐标轴刻度
              },
              axisLine: {
                // 坐标轴轴线相关配置
                lineStyle: {
                  // 坐标轴轴线样式
                  color: "#fff", // 坐标轴轴线颜色
                },
                axisLabel: {
                  // 坐标轴刻度标签相关配置
                  color: "#ffffff",
                  fontSize: 14,
                  margin: 20,
                },
              },
            },
          ],
          yAxis: [
            {
              type: "value", // value(数值轴,适用于连续数据)
              axisTick: {
                // 坐标轴刻度相关配置
                show: false, // 是否显示坐标轴刻度
              },
              axisLine: {
                // 坐标轴轴线相关配置
                show: false, // 是否显示坐标轴轴线
              },
              axisLabel: {
                // 坐标轴刻度标签相关配置
                color: "#ffffff",
                fontSize: 14,
              },
              splitLine: {
                // 坐标轴在 grid 区域中的分隔线
                lineStyle: {
                  // 分割线配置
                  color: "rgba(255,255,255,0.15)", // 分割线颜色
                },
              },
            },
          ],
          series: [
            // 底部的椭圆形(象形柱图):pictorialBar
            {
              type: "pictorialBar", // pictorialBar(象形柱图)
              label: {
                // 图形上的文本标签,可用于说明图像的一些数据信息,比如值,名称等
                show: true, //是否显示标签
                position: ["17", "-30"], // 标签的位置(可以是绝对的像素值或者百分比['50%','50%',也可以是top,left等])
                color: "#01E4FF",
                fontSize: 14,
              },
              symbolSize: [40, 20], // 图形的大小用数组分别比表示宽和高,也乐意设置成10相当于[10,10]
              symbolOffset: [0, 10], // 图形相对于原本位置的偏移
              z: 12, // 象形柱状图组件的所有图形的 z 值.控制图形的前后顺序.z 值小的图形会被 z 值大的图形覆盖.
              itemStyle: {
                // 图形样式
                // echarts.graphic.LinearGradient(echarts内置的渐变色生成器)
                // 4个参数用于配置渐变色的起止位置,这4个参数依次对应右 下 左 上
                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                  // 这里 offset: 0 1 ,表示从下往上的渐变色
                  {
                    offset: 0, // 0%处的颜色
                    color: "rgba(31,155,255,1)",
                  },
                  {
                    offset: 1, // 100%处的颜色
                    color: "rgba(0,229,255,1)",
                  },
                ]),
              },
              data: yData,
            },
            // 中间的长方形柱状图(柱状图):bar
            {
              type: "bar", // 柱状图
              barWidth: 40, // 柱条的宽度,不设时自适应
              barGap: "0%", // 柱子与柱子之间的距离
              itemStyle: {
                // 图形样式
                // color支持(rgb(255,255,255)、rgba(255,255,255,1)、#fff,也支持渐变色和纹理填充)
                // 下面就是使用线性渐变
                color: {
                  x: 0,
                  y: 0,
                  x2: 0,
                  y2: 1,
                  type: "linear",
                  global: false,
                  colorStops: [
                    {
                      offset: 0, // 0%处的颜色
                      color: "rgba(0,229,255,0.5)",
                    },
                    {
                      offset: 1, // 100%处的颜色
                      color: "#1F9BFF",
                    },
                  ],
                },
              },
              data: yData,
            },
            // 顶部的椭圆形(象形柱图):pictorialBar
            {
              type: "pictorialBar",
              symbolSize: [40, 20],
              symbolOffset: [0, -10],
              z: 12,
              symbolPosition: "end",
              itemStyle: {
                color: new echarts.graphic.LinearGradient(
                  0,
                  0,
                  0,
                  1,
                  [
                    {
                      offset: 0,
                      color: "rgba(31,155,255,1)",
                    },
                    {
                      offset: 1,
                      color: "rgba(0,229,255,1)",
                    },
                  ],
                  false
                ),
              },
              data: yData,
            },
          ],
        };
      option && myChart.setOption(option);
    },
  },
};
</script>
    
  <style lang="less" scoped>
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值