大家来看这篇文章,想必都了解过wordle。但是wordle难以运用于自己项目的web展示。

于是我着手自己写了一个,这里给大家介绍一下方法。相信大家也能迅速的构建一个wordCloud,

该项目在gitHub地址:https://github.com/Leannechn/WordCloud.git

先看看效果吧,颜色可以自己定义,这里我就以单色显示:

数据格式:

首先我们先分析一下实现步骤:

在wordle中,采用的是不断产生随机位置,进行碰撞测验,如果被测验位置是空白则填充文字。那么统一

1、文字位置是相对集中的随机数(正态分布于中心点位置);

2、碰撞测验;

3、优化碰撞测验;

现在我们来一一解决问题:

1、正态分布的随机数:大家都知道Math.random( ) 产生的是均匀随机数,也就是文字会均匀的分布在整个画布中。那么到底如何生成正态分布的随机数呢。

生成的算法很简单:假设,我们用Math.random( ) 生成N个随机数,则这N个随机数的平均数趋近与0.5 。当N值越大,平均数趋近0.5的概率就越大,反之,概率越小 。想看原理的亲可另行了解正态分布的算法。总而言之,n个(0,1)之间的随机数的平均数以0.5为中心程正态分布。n值越大随机值越集中。

Math.floor(arr.reduce(function(i,j){return i+j})/n*(max-min))+min;

这样我们就取到了以(min,max)中心点正态分布的随机值。

2、碰撞测验:利用canvas的 .getImageData(x,y,width,height)

.getImageData(x,y,width,height)的返回值是一个一位数组。假设该矩形中用N 个像素点,每个像素点则由4个值决定即:r g b a;那么这个一位数组的长度为n*4,

于是,我们只要判断其中是否有像素信息即可。如果为空白则,所有的值都为0;如果碰撞,则重新生成随机值。

到此为止,制作水平方向的标签云已经没有问题了。计算优化后面再介绍。

那么竖直和水平的混搭要如何做?

亲肯定会说,旋转即可。是的 ,原理就这么简单!但是坑在于,旋转是相对于原点旋转的,那么生成的文字必须一开始是围绕中心点,而后平移到画布中间,

这时候的.getImageData(x,y,width,height)会如何变化呢,下节介绍。。。

wordcloud----canvas 绘制标签云/词云web版wordle(一)相关推荐

  1. wordcloud库的常规方法及词云绘制实例

    对一文本wordclound.txt进行词云绘制 import jieba import wordcloud f = open("wordcloudeg.txt","r& ...

  2. Python生成标签云/词云

    原文地址:http://itdarcy.wang/index.php/20200104/355 python:3.7 功能模块:wordcloud 1.6.0.matplotlib 3.1.2 安装w ...

  3. 软考云题库Web版题库V1.1更新功能

    这一周软考云题库Web版迎来了一次重要的迭代更新,已于2020/1/5 日更新发布了,试用的同学可以前往试用体验新功能了.如果您有好的建议和意见也欢迎留言交流. 本次更新内容 首页调整,增加考试倒计时 ...

  4. python词云形状为六边形怎么做_python第三方库wordcloud绘制任意形状词云教程

    版权声明:转载附链接哦.https://blog.csdn.net/weixin_43886356/article/details/86711292 此篇教程划分为两种情况,原文本为汉字和原文本为英文 ...

  5. Python3+Wordcloud 实现单身相亲网站词云分析

    MongoDB封装,实现数据存储 ''' 存储文件:MongoClass.py ''' import pymongo import traceback class MongoOpt: __client ...

  6. python爬虫爬取最好大学网排名分析地区大学数量分布并绘制柱状图和词云

    本人也是初学者,本博客用于python初学者参考使用. 分析网页 本次爬取的是最好大学网软科中国最好大学排名2018:http://www.zuihaodaxue.cn/zuihaodaxuepaim ...

  7. Python中使用wordcloud生成漂亮的中文词云

    场景 实现 新建文件夹ChinaMapWordCloud 文件夹下新建fonts目录用于存放字体. 新建ChinaMap.py from wordcloud import WordCloud impo ...

  8. Python使用wordcloud+pillow基于给定图像制作词云

    大致思路:Python扩展库wordcloud可以用来制作词云,而pillow库提供了图像处理功能,代码结合二者创建了词云头像,其中把给定的图像作为参考,只保留词云中与图像前景对应位置的像素,起到裁剪 ...

  9. 如何用Python绘制好看的词云代码?个人总结

    在参加一个比赛的时候,最后需要对得到的文本结论进行可视化分析.于是,我决定采用词云的方式展示最后的结果.(代码在文末) 结论分为三个部分:"你为什么喜欢做公益?","你为 ...

  10. 软考刷题利器—软考云题库Web版

    之前有朋友说小程序刷题有时不太方便,想在电脑上刷题,能不能开发个Web版,后来就有了软考云题库的Web版. 项目采用了SpringBoot 2.0+JPA+Thymeleaf 模板+Bootstrap ...

最新文章

  1. 办公用笔记本电脑哪个好_北京中仓红色办公沙发哪个品牌好
  2. CodeForces - 731D 80-th Level Archeology(线段树+暴力/差分)
  3. 上班骚扰男同事被抓到......
  4. 卷积神经网络系列之softmax,softmax loss和cross entropy
  5. 146_ACCESS之HR招聘信息管理_64位
  6. Solr集群安装Version5.5.2(cloud模式)
  7. wepy公共样式_小程序开发wepy框架类vue的开发方式
  8. 计算机网络 | 无盘工作站的建立
  9. Dos下的edit命令
  10. 推荐系统中的context到底指的是什么?
  11. 算法提高——珠心算测验
  12. Qt进程-QProcess使用总结
  13. 世界三大质量奖项介绍---波多里奇奖(转载)
  14. 远程工具TeamViewer 移动端和PC端连接
  15. 学习李沐的课程中的问题记录
  16. 实现导入Excel表导入数据库并显示在echarts图形上面
  17. nextcloud安装日历插件使用并设置导入导出和云端同步(安卓手机和ios手机)
  18. Loadrunner socket测试内容总结
  19. poi导出Excel文件下载数据
  20. 基于centos 搭建GP集群

热门文章

  1. iOS应用出现未验证应用的问题排查
  2. 信息安全概论———网络安全协议
  3. BZOJ5369:[PKUSC2018]最大前缀和(状压DP)
  4. 如何优雅的给你的APK文件打上签名
  5. Java使用comms-net jar包完成ftp文件上传进度的检测功能
  6. 干货 | 携程度假数据治理之数据标准管理实践
  7. 二倍图三倍图什么意思_ios切图(一倍图+二倍图+三倍图)
  8. 怎么看《就算老公一毛钱股份都没拿到,在我心里,他依然是最牛逼的创业者》文中创业公司 CEO 的行为?
  9. h桥控制电机刹车_一种电机H桥制动电路的制作方法
  10. java 网站微信登录_网站微信授权登录-JAVA版