[本文出自天外归云的博客园]

简介

在Vue中使用E-Charts可以用V-Charts,词云图在V-Charts官网中介绍比较简单,如果想更多定制的话,官网上说要在extend属性中进行扩展。

V-Charts官网关于V-Charts中词云图相关的介绍

Echart官网Echarts github中关于词云图相关的介绍

V-Charts官网关于extend配置项的介绍

使用示例

以下是扩展后的样子:

<template>
<div>
<el-row>
<h3 class="float-left"><i class="el-icon-check"></i> 分词统计</h3>
</el-row>
<el-row :gutter="20">
<el-col :span="3">
<SelectOption :selected.sync="versionSelected"
:options="versionOptions"
placeholder="请选择版本"></SelectOption>
</el-col>
<el-col :span="3">
<SelectOption :selected.sync="platformSelected"
:options="platformOptions"
placeholder="请选择平台"></SelectOption>
</el-col>
<el-col :span="6">
<DateTimePicker :dateValue.sync="dateValue"></DateTimePicker>
</el-col>
</el-row>
<!-- <div id="wordCloud">
<wordcloud :rotate="{from: -5, to: 5, numOfOrientation: 5 }"
fontScale="n"
spiral="rectangular"
:data="cloudWords"
nameKey="word"
valueKey="cou"
:wordClick="showTimes">
</wordcloud>
</div> -->
<ve-wordcloud v-if="showChart"
width="100%"
height="700px"
:data="chartData"
:extend="chartExtend"
:settings="chartSettings"></ve-wordcloud>
<div style="text-align:left;margin-left:10px"
v-else>没数据</div>
</div>
</template>
<style>
</style>
<script>
import { SelectOption, DateTimePicker } from '@/components/common'
import { getFeedbackWordCloud } from '@/api/feedbacks'
import { EventBus } from '@/bus.js'
// import wordcloud from 'vue-wordcloud'
export default {
name: 'wordCloud',
components: {
// wordcloud,
SelectOption,
DateTimePicker
},
data () {
return {
showChart: true,
chartSettings: {
color: ['#4876FF', '#87CEFA', '#98F5FF', '#BBFFFF']
},
chartExtend: {
series: {
rotationRange: [0, 0],
sizeRange: [50, 150],
width: '100%',
height: '100%',
drawOutOfBound: true,
textStyle: {
normal: {
color: function () {
return 'rgb(' + [
Math.round(Math.random() * 160),
Math.round(Math.random() * 160),
Math.round(Math.random() * 160)
].join(',') + ')'
}
},
emphasis: {
shadowBlur: 10,
shadowColor: '#333'
}
}
}
},
chartData: {
columns: ['word', 'cou'],
rows: []
},
version: [],
versionSelected: 'all',
versionOptions: [],
platform: [],
platformSelected: 'all',
platformOptions: [],
myProjectId: this.$route.query.feedbackProject,
dateValue: [new Date(2018, 9, 1, 0, 0), new Date(2018, 9, 8, 0, 0)]
}
},
methods: {
/**
* 阅读vue-wordcloud
* WordCloud.vue源代码即可知此函数是必须的
*/
showTimes (val1, val2) {
for (var i in val2.data) {
if (val2.data[i]['text'] === val1) {
var tip = '"' + val1 + '" 分词统计次数:' + val2.data[i]['cou']
this.$alert(tip, '', {})
}
}
},
getFbWordCloud () {
let _this = this
let projectId = _this.myProjectId
let startTime = _this.startTime
let endTime = _this.endTime
let clientVersion = _this.versionSelected
let origin = _this.platformSelected
if (origin === 'all') {
origin = -1
}
getFeedbackWordCloud(projectId, startTime, endTime, clientVersion, origin).then(data => {
_this.showChart = true
_this.chartData.rows = data
if (data === undefined || data.length === 0) {
_this.showChart = false
}
})
},
initVersion () {
let _this = this
// Version Select Options
_this.versionOptions = []
for (let index = 0; index < _this.version.length; index++) {
_this.versionOptions.push({
'id': (_this.version)[index].name,
'label': (_this.version)[index].name,
'value': (_this.version)[index].name
})
}
_this.versionSelected = 'all'
},
initPlatform () {
let _this = this
// Platform Select Options
_this.platformOptions = []
for (let index = 0; index < _this.platform.length; index++) {
_this.platformOptions.push({
'id': (_this.platform)[index].id,
'label': (_this.platform)[index].name,
'value': (_this.platform)[index].id
})
}
_this.platformSelected = 'all'
},
setDateValue () {
let _this = this
let sDate = _this.dateValue[0]
let eDate = _this.dateValue[1]
_this.startTime = sDate.getFullYear() + '-' + (sDate.getMonth() + 1) + '-' + sDate.getDate() + ' 00:00:00'
_this.endTime = eDate.getFullYear() + '-' + (eDate.getMonth() + 1) + '-' + eDate.getDate() + ' 00:00:00'
// console.log(_this.startTime)
// console.log(_this.endTime)
}
},
created () {
let _this = this
_this.setDateValue()
// Get projectId
EventBus.$on('projectId', projectId => {
// console.log('[WordCloud下车]projectId')
_this.myProjectId = projectId
})
// Get version
EventBus.$on('version', version => {
// console.log('[WordCloud下车]version')
_this.version = version
_this.initVersion()
})
// Get origin
EventBus.$on('origin', origin => {
// console.log('[WordCloud下车]origin')
_this.platform = origin
_this.initPlatform()
})
},
mounted () {
this.getFbWordCloud()
},
watch: {
versionSelected: {
immediate: false,
handler: function () {
this.getFbWordCloud()
}
},
platformSelected: {
immediate: false,
handler: function () {
this.getFbWordCloud()
}
},
dateValue: {
immediate: false,
handler: function () {
this.setDateValue()
this.getFbWordCloud()
}
},
version: {
immediate: false,
handler: function () {
this.getFbWordCloud()
}
},
platform: {
immediate: false,
handler: function () {
this.getFbWordCloud()
}
}
}
}
</script>

上面是我使用词云图所在的整个单文件组件,其中词云图使用相关只需要关注以下三点:

1.变量chartExtend在ve-wordcloud标签中对应的插槽位

2.我是全局引入的ve-wordcloud,所以如果你没有全局引入,一定要在组件中import下:

// import wordcloud from 'vue-wordcloud'

3.变量chartSettings是官网上给出的标准设置插槽位对应的变量值

V-Charts中使用extend属性定制词云图的更多相关文章

  1. 使用Python定制词云

    一.实验介绍 1.1 实验内容 在互联网时代,人们获取信息的途径多种多样,大量的信息涌入到人们的视线中.如何从浩如烟海的信息中提炼出关键信息,滤除垃圾信息,一直是现代人关注的问题.在这个信息爆炸的时代 ...

  2. (数据科学学习手札71)在Python中制作个性化词云图

    本文对应脚本及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 一.简介 词云图是文本挖掘中用来表征词频的数据可视化 ...

  3. 用Python制作酷炫词云图,原来这么简单!

    一.简介词云图是文本挖掘中用来表征词频的数据可视化图像,通过它可以很直观地展现文本数据中地高频词:! 图1 词云图示例 在Python中有很多可视化框架可以用来制作词云图,如pyecharts,但这些 ...

  4. jQuery中,$.extend,$obj.extend和$.fn.extend三者的区别

    jQuery中,$.extend,$obj.extend和$.fn.extend三者的区别 现在做的一个项目,所使用的框架是基于jQuery扩展的,于是平时学了一下jQuery,了解到了它的扩展函数: ...

  5. js中的extend,可实现浅拷贝深拷贝

    js中的extend   1.    JS中substring与substr的区别 之前在项目中用到substring方法,因为C#中也有字符串的截取方法Substring方法,当时也没有多想就误以为 ...

  6. js中的extend

    js中的extend   1.    JS中substring与substr的区别 之前在项目中用到substring方法,因为C#中也有字符串的截取方法Substring方法,当时也没有多想就误以为 ...

  7. jQuery中样式和属性模块简单分析

    1.行内样式操作 目标:扩展框架实现行内样式的增删改查 1.1 创建 css 方法 目标:实现单个样式或者多个样式的操作 1.1.1 css方法 -获取样式 注意:使用 style 属性只能获取行内样 ...

  8. (转)jQuery中的extend()方法

    本文转自:http://www.xiabingbao.com/jquery/2015/05/30/jquery-extend 原文的排版要比这里美观很多,建议去原文查看.本文仅仅作为个人的mark,方 ...

  9. HTML 5 中的标准属性

    HTML 全局属性 HTML 属性赋予元素意义和语境. 下面的全局属性可用于任何 HTML 元素. (5)= HTML5 中添加的属性. 属性 描述 accesskey 规定激活元素的快捷键. cla ...

随机推荐

  1. 潭州课堂25班:Ph201805201 django框架 第四课 模板常用标签,模板继承与引用,自定义过渡器 (课堂笔记)

    if 语句 判断传入的 name 值 建好这些文件后,对 url 进行配置 在浏览器中访问 for 循环 页面跳转: 通过  name 跳转时要在 urls 文件中为该 path 设置 name 带参 ...

  2. python字符串与列表的相互转换

    学习内容: 1.字符串转列表 2.列表转字符串 1. 字符串转列表 s ='hello python !'li = s.split(' ') #注意:引号内有空格print (li)输出:['hell ...

  3. git常用命令2--- git rebase

    git rebase:简单而言就是把某个分支上的提交commit嫁接到另一个commit的后面,在这个过程中这些commit的base相对就改变了,也就叫变基. git rebase <upst ...

  4. Java 避免创建不必要的对象

    最好能重用对象而不是在每次需要的时候就创建一个相同功能的新对象.如果对象是不可变的,它就始终可以被重用. String s = new String("stringette"); ...

  5. Java基础知识总结--final、finally、finalize的区别

    谈谈final.finally.finalize的区别 1.final修饰符:如果一个类被声明为final,意味着这个类不能再被派生出新的子类,不能作为父类被别的类继承.因此,一个类不能即被声明为ab ...

  6. Vue(二十)项目初始化步骤

    提:需要安装 node.js / npm淘宝镜像 / webpack / vue-cli脚手架构建工具 1.创建项目 - vue init webpack framework https://gith ...

  7. javascript中的常用表单事件用法

    下面介绍几种javascript中常用的表单事件: 一,onsubmit:表单中的确认按钮被点击时发生的事件,如下案例. 案例解析:弹出表单中提交的内容 <form name="tes ...

  8. 11 week blog

    Obtaining the JSON: 1.首先,我们将把要检索的JSON的URL存储在变量中. 2.要创建请求,我们需要使用new关键字从XMLHttpRequest构造函数创建一个新的请求对象实例 ...

  9. 12、Bootstrap中文文档(其它插件分享)

    给大家介绍一个前端框架让你从此写起前端代码与之先前相比如有神助般的效果拉就是Bootstrap. 本片导航: Bootstrap的下载 css样式的使用 JavaScript 效果的引用 其他前端插件 ...

  10. 2012服务器在IIS部署的SLL(https)网址谷歌浏览器无法访问的问题解决

    服务器环境:Windows Server 2012,IIS8. 当绑定了https,使用IE和Firefox浏览器能够正常访问,但是使用谷歌浏览器会出现net::ERR_CONNECTION_ABOR ...