魅力标签云,奇幻词云图 —— 数据可视化新境界

目录

目的

  1. 掌握文本与文档可视化:使用特定软件或编程语言(如Python, R等)来实现文本和文档的可视化。
  2. 能够进行日志数据可视化操作:日志数据通常包含大量的时间戳信息,对其进行可视化有助于发现系统运行的趋势和异常。
  3. 了解社交网络可视化:社交网络数据通常表现为用户之间的关系网络,通过可视化可以清晰地展示用户间的交互模式和社区结构。常用的工具有Gephi、NetworkX等。

原理详解

  1. 关键词可视化

    • 标签云:是一种流行的关键词展示方式,通过字体大小和颜色的变化来反映关键词的重要性。
    • 文档散:不同于简单的标签云,文档散考虑了词汇之间的关系,使得关键词的布局更有意义。
  2. 时序文本可视化

    • 这种类型的可视化特别适合于展示随时间变化的文本数据,如新闻报道、社交媒体帖子等。
    • 主题河流图文本流图都是用来表示随着时间推移,话题或情绪变化的有效方法。
  3. 基于图的文本关系可视化

    • 词语树短语网络可以帮助我们理解文本中词汇之间的关系,例如同义词、反义词、上下位关系等。
    • 在短语网络中,节点代表词汇或短语,而带有方向的连线则表示这些词汇或短语之间的关系。
  4. 文档间关系可视化

    • 星系视图是一种有效的展示大量文档之间相似度的方法,通过将文档投影到二维空间中,可以直观地看到文档群组的形成。

建议

  • 实践操作:选择合适的工具(如D3.js、Tableau、Gephi等)进行实际操作,尝试对给定的数据集(如新闻文章、微博帖子等)进行上述各种类型的可视化。
  • 案例分析:挑选几个典型的案例,比如分析某个热门话题在社交媒体上的传播路径,或者研究一段时期内公众对某一事件的态度变化。
  • 反思总结:在完成每个可视化任务后,思考其背后的设计理念和技术实现,以及这种表现形式的优点和局限性。

标签云:用于汇总生成的标签,一般是独立词汇

运行前的准备

  • 安装依赖库 :如果您还没有安装pytagcloud库,可以通过pip安装:pip install pytagcloud

国内阿里云镜像

安装pygame:

java 复制代码
pip install pygame -i https://mirrors.aliyun.com/pypi/simple/

安装pytagcloud:

java 复制代码
pip install pytagcloud -i https://mirrors.aliyun.com/pypi/simple/
  • 字体文件 :确保您的系统中安装了msyh(微软雅黑)字体,否则可能需要指定其他可用的字体。

代码示例

为了确保代码的可读性和健壮性,以下是稍微调整后的版本:

python 复制代码
from pytagcloud import create_tag_image, make_tags
import re
import time
from collections import Counter

# 去除内容中的非法字符
def validate_content(content):
    rstr = r"[\/\\\:\*\?\"\<\>\|\.\*\+\-\(\)\"\'\(\)\!\?\"\"\,\。\;\:\{\}\=\%\*\~\·]"
    new_content = re.sub(rstr, "", content)
    return new_content

if __name__ == '__main__':
    # 文件路径
    file_path = 'D:/edge/shuju/Lib/site-packages/pytagcloud/fonts/guzhai_tag.txt'
    
    # 读取文件内容
    with open(file_path, 'r', encoding='UTF-8') as file:
        data = file.read().split('\r\n')
    
    # 处理内容,生成关键词列表
    words = []
    for line in data:
        cleaned_line = validate_content(line)
        words.extend(cleaned_line.split())
    
    # 统计关键词频次
    word_counts = Counter(words).most_common()
    
    # 生成标签云
    tags = make_tags(word_counts, maxsize=65)
    current_time = time.strftime('%Y%m%d%H%M%S', time.localtime())
    image_filename = f'tagcloud_{current_time}.png'
    
    # 创建标签云图片
    create_tag_image(tags, image_filename, size=(1000, 800), fontname='msyh', background=(255, 255, 255))
    
    print(f'标签云已保存至 {image_filename}')
  1. 文件路径 :确保文件路径正确无误,特别是当您的工作目录不是/Users/teacher/Jupyter/时,需要调整文件路径以匹配实际的文件位置。

  2. 编码 :您的代码中指定了encoding='UTF-8',这是正确的做法,因为很多中文文本文件都使用UTF-8编码。如果遇到乱码问题,请检查文本文件的实际编码。

  3. 正则表达式 :您使用的正则表达式rstr = r"[\/\\\:\*\?\"\<\>\|\.\*\+\-\(\)\"\'\(\)\!\?\"\"\,\。\;\:\{\}\{\}\=\%\*\~\·]"用于去除一些特殊字符,这对于生成标签云来说是有必要的,但请确保没有删除掉重要的词汇部分。

  4. Counter对象Counter对象会自动统计列表中元素出现的次数,这里用于计算每个单词的频率。

  5. make_tags函数 :这个函数将关键词及其出现次数转换成pytagcloud所需的格式,同时可以设置最大字体大小。

  6. create_tag_image函数:此函数负责生成标签云图片,您可以指定图片的尺寸、字体名称、背景颜色等参数。

报错

AttributeError:

Invalid font name. Should be one of Nobile, Old

Standard TT, Cantarell, Reenie Beanie, Cuprum, Molengo, Neucha,

Philosopher, Yanone Kaffeesatz, Cardo, Neuton, Inconsolata, Crimson

Text, Josefin Sans, Droid Sans, Lobster, IM Fell DW Pica, Vollkorn,

Tangerine, Coustard, PT Sans Regular

错误表明pytagcloud库无法识别您指定的字体名称。pytagcloud支持的字体名称是有限的,您需要确保使用的是受支持的字体之一。

解决方法

在这里面修改Lib\site-packages\pytagcloud\fonts

D:\edge\shuju\Lib\site-packages\pytagcloud\fonts

将下载字体拷贝

在fonts.json添加

java 复制代码
{
"name": "msyh",
"ttf":"msyh.ttf",
"web":"none"
},

在这里插入图片描述

在上一级可以看到,http://localhost:8888/view/tagcloud_20241107102044.png

国内镜像

pip install jieba -i https://mirrors.aliyun.com/pypi/simple/

pip install wordcloud -i https://mirrors.aliyun.com/pypi/simple/

词云:对本文中出现频率较高的词,视觉上突出显示

java 复制代码
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import os

# 设置字体路径
fontpath = 'D:/edge/shuju/Lib/site-packages/pytagcloud/fonts/msyh.ttf'

# 验证字体文件路径
if not os.path.exists(fontpath):
    print(f"字体文件不存在: {fontpath}")
    fontpath = None  # 使用默认字体
else:
    print(f"字体文件存在: {fontpath}")

# 读取文本文件
file_path = 'D:/edge/shuju/Lib/site-packages/pytagcloud/fonts/guzhai_word.txt'
with open(file_path, 'r', encoding='UTF-8') as f:
    text = f.read()

# 过滤词汇
removes = ['这里', '那里', '有着', '一般', '就是', '可以', '想要', '人们', '看着', '不要', '更是', '千户']

# 分词
words = jieba.lcut(text)
filtered_words = [word for word in words if word not in removes]
cuted = ' '.join(filtered_words)

# 绘制词云
wc = WordCloud(
    font_path=fontpath,  # 设置字体
    background_color="white",  # 背景颜色
    max_words=1000,  # 词云显示的最大词数
    max_font_size=500,  # 字体最大值
    min_font_size=20,  # 字体最小值
    random_state=42,  # 随机数
    collocations=False,  # 避免重复单词
    width=1600,  # 图像宽度
    height=1200,  # 图像高度
    margin=10  # 字间距
)
wc.generate(cuted)  # 生成词云

# 显示词云
plt.figure(figsize=(15, 9))  # 通过这里可以放大或缩小
plt.imshow(wc, interpolation='bilinear', vmax=1000)  # 插值模式,双线性插值
plt.axis("off")  # 隐藏坐标
plt.savefig("WordCloud.jpg")  # 保存词云图片
plt.show()  # 显示词云

版本错误借鉴

总结

向前冲!!!关键词可视化主要分为两大类:标签云和文档散。标签云通过汇总生成的独立词汇来展示关键词,而文档散则利用词汇库中的结构关系布局关键词,采用具有上下语义关系的词语来展示。

相关推荐
2601_962078033 小时前
Python办公自动化与数据分析实战 培训班2021年
python·数据分析·办公自动化·自动化办公·实战演练
2601_966949654 小时前
批量获取多只股票五档盘口的极简方案:QuantDash Python SDK 实战指南
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
SelectDB5 小时前
Apache Doris+ Paimon 2.0:构建 Agentic AI 数据闭环
大数据·数据库·数据分析
SimpleLearingAI5 小时前
DFL:分布焦点损失——让框回归“学分布“,而不只是“猜数字“
人工智能·数据挖掘·回归
zhanghaha13146 小时前
Python进阶教程:23_Scrapy 爬虫框架 零基础超详细教程
python·信息可视化
BYSJMG7 小时前
计算机毕设选题推荐:基于大数据的公共交通运营数据分析与可视化,Spark+K-Means聚类城市运营模式
大数据·hadoop·信息可视化·数据分析·spark·kmeans·课程设计
paopaokaka_luck9 小时前
非遗文物数字化系统(AI非遗问答、ONNX图像识别、协同过滤推荐、ECharts数据分析、非遗知识浏览与互动、文创商城订单闭环、文化活动报名签到、社区交流)
前端·javascript·vue.js·人工智能·数据分析·echarts
2601_9539880710 小时前
Ricon组态实时监控 - 毫秒级数据可视化
前端·物联网·数学建模·信息可视化·架构·前端框架
quantdash_cc10 小时前
如何设计高效率的批量股票数据获取程序?QuantDash Python SDK 全市场行情拉取实战指南
开发语言·python·数据分析·量化交易·股票数据·quantdash
m0_5873830010 小时前
全民健身解决方案软件开发:从架构设计到落地实践
人工智能·数据挖掘·系统架构·需求分析