兔头祝福词云

335 阅读2分钟

我正在参加「兔了个兔」创意投稿大赛,详情请看:「兔了个兔」创意投稿大赛

前言

兔年新春到,对大家的祝福词太多,于是制作成词云来展示,再变成兔头轮廓符合兔年气氛,兔头很丑萌,祝福很真诚。

微信图片_20230112174005.png 接下来我们来看一下如何实现这个祝福词云。

准备

技术栈

我是通过vue+echarts+echarts-wordcloud,技术栈我们选择自己熟悉的,主要还是echarts-wordcloud需要我们单独去下载npm包,需要注意的是echarts4.x版本与echarts-wordcloud1.x版本对应;echarts5.x与echarts-wordcloud2.x对应

轮廓图

为了让词云展示成兔头轮廓,我们需要准备一张轮廓图,图片最好是纯色的,这里推荐大家去iconfont找一张兔子形状的icon,下载成png即可。然后找一下图片转换工具,转成base64编码格式

实现

1.创建容器:跟实现普通图表一样,首先我们创建一个div容器,引入echarts与echarts-wordcloud

   import echarts from 'echarts'
   import 'echarts-wordcloud'

2.配置项:我们根据wordcloud属性进行对应配置即可,最重要的是轮廓图的实现,我们需要new Image(),将src设置为图片地址,将markImage属性设置为创建好的image

      const wordCloudClolor = ['#c00000','#c02000','#ff0000','#ff2000','#ff0020','#ff0040']
      const maskImage = new Image()
      maskImage.src = 转为的base64编码
      this.chart = echarts.init(document.getElementById(this.id))
      maskImage.onload = () => {
        this.chart.setOption({
          backgroundColor: '#e6e9f0',
          series: [
            {
              type: 'wordCloud',
              // 用来调整词之间的距离
              gridSize: 2,
              // 用来调整字的大小范围
              sizeRange: [10, 25],
              // 用来调整词的旋转方向
              rotationRange: [-90, 90],
              //必须要设置该属性才能生成想要的轮廓
              maskImage: maskImage,
              // 随机生成字体颜色
              textStyle: {
                normal: {
                  color: function() {
                    // Random color
                    const r = Math.floor(Math.random() * wordCloudClolor.length)
                    return wordCloudClolor[r]
                  }
                }
              },
              //宽 高
              width: '180%',
              height: '120%',
              // 展示的数据 由name跟vlaue组成
              data: [
               {name:新春快乐,value:2.0}
              ]
            }
          ]
        })
      }

如果词云填充的兔子轮廓效果不明显,我们可以调整width、height、gridSize、sizeRange达到想要的效果。

总结

大家可以根据自己的喜好去设置想要的展示的轮廓颜色等,要注意版本的对应及轮廓图的实现。词云的祝福送给大家,兔年大家天天开心!