Vue引入Echarts的echarts-wordcloud生成词云图

效果图

echarts 和echarts-wordcloud版本

注意Echarts5.0的版本要对应echarts-wordcloud的2.0版本,注意Echarts4.0的版本要对应echarts-wordcloud的1.0版本。

我的使用版本如下

 "echarts": "^5.0.1",
 "echarts-wordcloud": "^2.0.0",

 在VUE项目的main.js全局引入

import * as echarts from 'echarts';
Vue.prototype.$echarts = echarts

编写词云组件代码WordCloudChart.vue,

<template>
  <div id="char2" ref="chart" :style="{ width: '100%', height: '78%' }"></div>
</template>
<script>
import "echarts-wordcloud/dist/echarts-wordcloud";
import "echarts-wordcloud/dist/echarts-wordcloud.min.js";

export default {
  name: "WordCloudChart",
  data() {
    return {
      worddata: [
        {
          name: "老婆产假",
          value: 15000,
        },
        {
          name: "产假",
          value: 10081,
        },
        {
          name: "身体不舒服",
          value: 9386,
        },
        {
          name: "生病",
          value: 7500,
        },
        {
          name: "休假休息",
          value: 7500,
        },
        {
          name: "亲人去世",
          value: 6500,
        },
        {
          name: "腹泻",
          value: 6500,
        },
        {
          name: "头痛",
          value: 6000,
        },
        {
          name: "朋友婚礼",
          value: 4500,
        },
        {
          name: "亲戚来了",
          value: 3800,
        },
        {
          name: "办理证件",
          value: 3000,
        },
        {
          name: "家里有事",
          value: 2500,
        },
        {
          name: "老婆坐月子",
          value: 2300,
        },
        {
          name: "急性阑尾炎",
          value: 2000,
        },
        {
          name: "呕吐",
          value: 1900,
        },
        {
          name: "感冒",
          value: 1800,
        },
        {
          name: "拉肚子",
          value: 1700,
        },
        {
          name: "小孩生病",
          value: 1600,
        },
        {
          name: "搬家",
          value: 1500,
        },
        {
          name: "工作疲惫",
          value: 1200,
        },
        {
          name: "喜酒",
          value: 1100,
        },
        {
          name: "堵车",
          value: 900,
        },
        {
          name: "睡过头",
          value: 800,
        }
      ],
    };
  },
  mounted() {
    setTimeout(() => {
      this.initCharts(); //初始化
    }, 0);
  },
  beforeDestroy() {
    // if (!this.chart) {
    //   return;
    // }
    // this.chart.dispose();
    // this.chart = null;
  },
  methods: {
    initCharts() {
      console.log(this.worddata);

      let a = this.$refs.chart;

      let myChart2 = this.$echarts.init(a);
      myChart2.setOption({
        title: {
          //text: "center"
        },
        backgroundColor: "#E6E6FA",
        tooltip: {},

        series: [
          {
            type: "wordCloud",
            //用来调整词之间的距离
            gridSize: 10,
            // //用来调整字的大小范围

            sizeRange: [14, 60],
            // //用来调整词的旋转方向,,[0,0]--代表着没有角度,也就是词为水平方向,需要设置角度参考注释内容
            rotationRange: [-90, 90],
            // rotationRange: [ 0,90],
            // rotationRange: [0, 0],
            //随机生成字体颜色
            textStyle: {
              fontFamily: "sans-serif",
              fontWeight: "bold",
              // Color can be a callback function or a color string
              color: function () {
                // Random color
                return (
                  "rgb(" +
                  [
                    Math.round(Math.random() * 160),
                    Math.round(Math.random() * 160),
                    Math.round(Math.random() * 160),
                  ].join(",") +
                  ")"
                );
              },
            },
            emphasis: {
              focus: "self",

              textStyle: {
                shadowBlur: 10,
                shadowColor: "#333",
              },
            },
            //位置相关设置
            left: "center",
            top: "center",
            right: null,
            bottom: null,
            width: "200%",
            height: "200%",
            //数据
            data: this.worddata,
          },
        ],
      });
     //点击事件   
       myChart2.on('click', function (params) {
            alert(params.name);
        });
    },
  },
};
</script>
<style  scoped>
</style>

在父组件里使用该自组件

<template>
  <div v-if="true" id="mywordcloud" :style="{width: '100%', height: '350px'}" >

 <wordcloudchart > </wordcloudchart>
  </div>
 
</template>

<script>
  
  import wordcloudchart from "../zytest/WordCloudChart";
  export default {
     components: { wordcloudchart },
    name: "VueWordCloud",
    data () {
      return {
    
      
      }
    },
    mounted(){

    },
    methods: {
     
    }
  }
</script>

要在Vue项目中使用echarts-wordcloud绘制词云图,可以按照以下步骤操作: 1. 安装echartsecharts-wordcloud插件 ```bash npm install echarts --save npm install echarts-wordcloud --save ``` 2. 在需要使用词云图的组件中引入echarts ```javascript import echarts from 'echarts' ``` 3. 在mounted生命周期中初始化echarts实例,并设置词云图的配置项 ```javascript mounted() { const chartDom = this.$refs.chart const myChart = echarts.init(chartDom) const option = { series: [{ type: 'wordCloud', shape: 'circle', sizeRange: [20, 80], rotationRange: [-90, 90], rotationStep: 45, gridSize: 2, textStyle: { normal: { fontFamily: 'sans-serif', fontWeight: 'bold', color: function () { return 'rgb(' + [ Math.round(Math.random() * 255), Math.round(Math.random() * 255), Math.round(Math.random() * 255) ].join(',') + ')' } } }, data: [ { name: 'Apple', value: 10000 }, { name: 'Banana', value: 6181 }, { name: 'Orange', value: 4386 }, { name: 'Watermelon', value: 4055 }, { name: 'Pineapple', value: 2467 }, { name: 'Grape', value: 2244 }, { name: 'Mango', value: 1898 }, { name: 'Pear', value: 1484 }, { name: 'Cherry', value: 1001 }, { name: 'Peach', value: 987 }, { name: 'Kiwi', value: 900 } ] }] } myChart.setOption(option) } ``` 4. 在模板中添加echarts实例的容器 ```html <template> <div> <div ref="chart" style="width: 600px; height: 400px;"></div> </div> </template> ``` 以上就是在Vue项目中使用echarts-wordcloud绘制词云图的步骤,需要注意的是,词云图的配置项需要根据实际需求进行修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值