Vue3 + TS + echarts 快速实现展示图表,以及如果接收后端数据echarts不显示的问题

echarts

echarts介绍

  • echarts是用于前端展示图表的工具
  • 例如展示一张柱状图,条形图,饼状图之类的数据显示

echarts使用

下载与导入

  • 下载echarts
pnpm install echarts@5.1.2
  • 引入
import * as echarts from 'echarts'

创建一个图

  1. 首先创建一个<div>标签,获取该标签的dom属性,就是为该标签添加ref属性后,在ts中创建一个同名ref变量。记得设置高和宽,不然图片不显示
        <el-card style="height: 280px">
          <div ref="pointCharts" style="height: 230px;width: 100%"></div>
        </el-card>
const pointCharts = ref()
  1. 创建图标样式雏形,以下样式直接复制即可,date就是你要传入的数据,要集合类型。其中xAxis表示横轴坐标,yAxis是纵轴坐标,但是纵轴坐标可以自己生成,不需要我们设置即可。series就是每个纵轴坐标对应的数据。下面两个,starMessage.value.XXX,就是博主对应的数据
//定义一种图形
  const profit = reactive({
    title: {
      text: '近6个月用户增加数量',
      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: starMessage.value.timeList,
        axisTick: {
          // 关掉x轴中间的分割线
          show: false
        },
        axisLine: {
          lineStyle: {
            //x轴线的颜色
            width: 0,
            color: '#999999'
          }
        },
        axisLabel: {
          // x轴上的文字颜色
          textStyle: {
            color: '#999999'
          }
        }
      }
    ],
    yAxis: [{}],
    series: [
      {
        name: 'Direct',
        type: 'line',
        barWidth: '45%',
        // 柱形图的颜色和外观设置
        itemStyle: {
          color: '#5d65e3',
          borderRadius: 50
        },
        // 高亮的图形样式和标签样式。
        emphasis: {
          itemStyle: {
            color: '#00ffb2' // 选中柱颜色
          }
        },
        data: starMessage.value.userCountList
      }
    ]
  })

  1. 实现组件的挂载,其中profit就是第二步中的创建的雏形
  //组件挂载
  const profitCharts = echarts.init(pointCharts.value)
  profitCharts.setOption(profit)
  1. 最终要的一步,为了让组件成功加载,将第二第三步骤封装到一个方法中

const Loading = () => {

//定义一种图形
  const profit = reactive({
    title: {
      text: '近6个月用户增加数量',
      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: starMessage.value.timeList,
        axisTick: {
          // 关掉x轴中间的分割线
          show: false
        },
        axisLine: {
          lineStyle: {
            //x轴线的颜色
            width: 0,
            color: '#999999'
          }
        },
        axisLabel: {
          // x轴上的文字颜色
          textStyle: {
            color: '#999999'
          }
        }
      }
    ],
    yAxis: [{}],
    series: [
      {
        name: 'Direct',
        type: 'line',
        barWidth: '45%',
        // 柱形图的颜色和外观设置
        itemStyle: {
          color: '#5d65e3',
          borderRadius: 50
        },
        // 高亮的图形样式和标签样式。
        emphasis: {
          itemStyle: {
            color: '#00ffb2' // 选中柱颜色
          }
        },
        data: starMessage.value.userCountList
      }
    ]
  })

  //组件挂载
  const profitCharts = echarts.init(pointCharts.value)
  profitCharts.setOption(profit)
}
  1. 将该方法放如入到 onMounted中挂载,但是一定要添加await属性,为了防止接口调用完毕,组件就已经挂载,从而导致图片不显示
onMounted(async () => {
  //获取echarts的dom元素
  await getEcharts() //这个方法是从后端调用接口获取图中的是数据用的
  await Loading()
})
  • 效果展示
  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 3 + TypeScript + Vite项目中使用echarts来请求并展示两个图表数据,你可以按照以下步骤进行操作: 1. 在项目中安装echarts依赖。可以使用npm或yarn命令来安装echarts,例如:`npm install echarts --save`。 2. 在main.ts文件中引入echarts,并将其挂载到Vue实例上。你可以按照以下代码示例来实现: ```typescript import { createApp } from "vue"; import App from "./App.vue"; import echarts from "echarts"; const app = createApp(App); app.config.globalProperties.$echarts = echarts; ``` 通过以上代码,你已经将echarts挂载到了Vue实例的全局属性$echarts上。 3. 在需要使用echarts的组件中引入echarts,并在页面渲染完成后使用echarts来请求并展示图表数据。假设你要在App.vue组件中展示两个图表数据,你可以按照以下代码示例来实现: ```vue <template> <div> <div ref="chart1" style="width: 400px; height: 300px;"></div> <div ref="chart2" style="width: 400px; height: 300px;"></div> </div> </template> <script> import { ref, onMounted } from "vue"; export default { name: "App", setup() { const chart1 = ref(null); const chart2 = ref(null); onMounted(() => { // 请求图表1的数据并绘制图表 const chart1Data = fetchDataForChart1(); // 根据实际情况获取图表1的数据 const chart1Instance = $echarts.init(chart1.value); chart1Instance.setOption(chart1Data); // 请求图表2的数据并绘制图表 const chart2Data = fetchDataForChart2(); // 根据实际情况获取图表2的数据 const chart2Instance = $echarts.init(chart2.value); chart2Instance.setOption(chart2Data); }); return { chart1, chart2, }; }, }; function fetchDataForChart1() { // 根据实际情况请求图表1的数据并返回 // 例如:return axios.get("/api/chart1").then((res) => res.data); } function fetchDataForChart2() { // 根据实际情况请求图表2的数据并返回 // 例如:return axios.get("/api/chart2").then((res) => res.data); } </script> ``` 在以上代码中,我们使用了`ref`和`onMounted`来获取图表的DOM元素,并在页面渲染完成后使用echarts来请求并展示图表数据。 请注意,以上代码仅为示例代码,你需要根据实际情况来实现`fetchDataForChart1`和`fetchDataForChart2`方法来请求图表数据。此外,你还需要根据实际需求来配置echarts图表选项。 #### 引用[.reference_title] - *1* *2* [vue3+ts+vite 使用echarts](https://blog.csdn.net/gusensen/article/details/129445665)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [vue3+vite+ts+echarts项目问题汇总](https://blog.csdn.net/weixin_41107170/article/details/126401617)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值