vue3+ts 使用echarts 画圆柱状图

效果图如下:

 代码如下

<script lang="ts" setup>
  import { reactive, ref, toRefs, onMounted } from 'vue';
  import * as echarts from 'echarts';
  // 获取echarts的dom元素
  let chartRef = ref();
  // 定义收益柱状图数据
  let profit = reactive({
    title: {
      text: '总收益:236.15  人数:32订阅',
      textStyle: {
        fontSize: 12,
        color: '#222222',
        fontFamily: 'Source Han Sans CN, Source Han Sans CN-Medium',
      },
      subtext: '收益统计',
      subtextStyle: {
        color: '#222222',
        fontFamily: 'Source Han Sans CN, Source Han Sans CN-Normal',
      },
    },
    grid: {
      left: '3%',
      right: '4%',
      bottom: '3%',
      containLabel: true,
    },
    xAxis: [
      {
        type: 'category',
        data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Now', 'Dec'],
        axisTick: {
          // 关掉x轴中间的分割线
          show: false,
        },
        axisLine: {
          lineStyle: {
            //x轴线的颜色
            width: 0,
            color: '#999999',
          },
        },
        axisLabel: {
          // x轴上的文字颜色
          textStyle: {
            color: '#999999',
          },
        },
      },
    ],
    yAxis: [
      {
        type: 'value',
        // y轴轴刻度最大值
        max: 30,
        //自动计算的坐标轴最小间隔大小
        minInterval: 6,
        // 强制设置坐标轴分割间隔
        interval: 5,
        axisLabel: {
          // y轴字体颜色
          color: '#999999',
        },
      },
    ],
    series: [
      {
        name: 'Direct',
        type: 'bar',
        barWidth: '45%',
        // 柱形图的颜色和外观设置
        itemStyle: {
          color: '#D5E0FF',
          borderRadius: 50,
        },
        // 高亮的图形样式和标签样式。
        emphasis: {
         
          itemStyle: {
            color: '#007DFF', // 选中柱颜色
          },
        },
        data: [30, 26, 24, 23, 21, 19, 19, 18, 16, 13, 14, 12],
      },
    ],
  });
  onMounted(() => {
    let profitCharts = echarts.init(chartRef.value);
    profitCharts.setOption(profit);
  });
</script>

如果用id去获取dom元素然后引入echarts配置时,会提示↓ 

Returns a reference to the first object with the specified value of the ID attribute.

@param elementId — String that specifies the ID value.

类型“HTMLElement | null”的参数不能赋给类型“HTMLElement”的参数。
不能将类型“null”分配给类型“HTMLElement”。ts(2345)

 此时可以用ts的断言↓

echarts.init(document.getElementById('trightBox') as HTMLCanvasElement);

但本人觉得没必要,直接用ref来获取dom元素即可👇

 

 

 出来的效果图就是最上面的 完美

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
使用Vue3和TypeScript以及ECharts来绘制环形图表,首先需要安装EChartsVue3的相关依赖,可以使用以下命令进行安装: ``` npm install echarts vue@next @vue/runtime-core @vue/compiler-sfc vue-loader@next vue-template-compiler --save ``` 接着,我们在Vue3组件中引入ECharts并进行初始化,代码如下: ```html <template> <div ref="chart" class="chart"></div> </template> <script lang="ts"> import { defineComponent, ref, onMounted } from 'vue'; import * as echarts from 'echarts'; export default defineComponent({ name: 'EChartsPie', setup() { const chart = ref<HTMLDivElement>(); onMounted(() => { const chartInstance = echarts.init(chart.value); const option = { tooltip: { trigger: 'item', formatter: '{a} <br/>{b}: {c} ({d}%)', }, series: [ { name: '访问来源', type: 'pie', radius: ['50%', '70%'], avoidLabelOverlap: false, label: { show: false, position: 'center', }, emphasis: { label: { show: true, fontSize: '30', fontWeight: 'bold', }, }, labelLine: { show: false, }, data: [ { value: 335, name: '直接访问' }, { value: 310, name: '邮件营销' }, { value: 234, name: '联盟广告' }, { value: 135, name: '视频广告' }, { value: 1548, name: '搜索引擎' }, ], }, ], }; chartInstance.setOption(option); }); return { chart, }; }, }); </script> <style scoped> .chart { width: 100%; height: 400px; } </style> ``` 在这个例子中,我们使用了`defineComponent`来定义一个Vue3组件,并使用`ref`来引用DOM元素,`onMounted`来在组件挂载后初始化ECharts并绘制图表。同时,我们还定义了一个`option`对象来配置ECharts图表的相关参数,最终使用`setOption`方法将图表绘制出来。 注意,在TypeScript使用ECharts需要额外安装`@types/echarts`类型声明文件,可以使用以下命令进行安装: ``` npm install @types/echarts --save-dev ``` 以上就是使用Vue3和TypeScript以及ECharts来绘制环形图表的基本步骤,可以根据实际需要进行修改和调整。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值