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

目录

  • 目的
    • 原理详解
      • 建议
  • 标签云:用于汇总生成的标签,一般是独立词汇
    • 运行前的准备
    • 代码示例
  • 词云:对本文中出现频率较高的词,视觉上突出显示
  • 总结

目的

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

原理详解

  1. 关键词可视化

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

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

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

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

建议

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

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

运行前的准备

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

国内阿里云镜像
安装pygame:



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

安装pytagcloud:


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

代码示例

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

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添加

{
"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/

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

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()  # 显示词云

版本错误借鉴
在这里插入图片描述

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/910829.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云计算答案

情境一习题练习 一、选择题 1、在虚拟机VMware软件中实现联网过程&#xff0c;图中箭头所指的网络连接方式与下列哪个相关&#xff08; C &#xff09;。 A.仅主机模式 B.桥接 C.NAT D.嫁接 2、请问下图这个虚拟化架构属于什么类型&#xff08; A …

【测试】【Debug】vscode pytest 找不到测试用例测试文件 行号部位没有绿色箭头

出现这种情况首先检查&#xff1a; 是否安装pytest点击vscode的这个图标如果其中都是空的&#xff0c;没有识别上&#xff0c;并且写好的.py测试文件的行号前面没有运行符号&#xff0c;要检查名称是否按照pytest的要求写&#xff0c;不然会识别不到。 命名规则注意&#xff1…

Echats柱状图的横坐标用图片显示

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图片作为横坐标示例 - ECharts</title><!-…

D-ID 推出能模仿用户的头部动作以及实时互动的 AI 头像

D-ID 宣布推出两种新型 AI 头像 — — Express 和 Premium&#xff0c;旨在提升内容创作的灵活性和人性化。这些头像将为企业在营销、销售和客户支持等领域的视频制作提供便利。用户只需少量文本输入和视觉数据&#xff0c;即可生成更自然的商业视频。 Express 头像可以通过约一…

vue使用canves把数字转成图片验证码

<canvas id"captchaCanvas" width"100" height"40"></canvas>function drawCaptcha(text) {const canvas document.getElementById(captchaCanvas);const ctx canvas.getContext(2d);// 设置背景颜色ctx.fillStyle #f0f0f0;ctx.f…

mybatisgenerator生成mapper时报错

本想使用generator自动生成model和mapper&#xff0c;没想到插件执行的时候报如下错误。 Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project ywq-mybatis-tools: Execution default-cli of goal org.myb…

【无标题】西安交通大学提出少锚点的端到端车道线检测算法Polar R-CNN

Abstract 车道线检测在自动驾驶中是一个关键且充满挑战的任务&#xff0c;特别是在实际场景中&#xff0c;由于车道线可能因其他车辆而被遮挡、形状纤细且长度较长&#xff0c;检测难度增大。现有基于锚点的检测方法通常依赖于预设的锚点来提取特征&#xff0c;并随后对车道线…

Vue + Vant Picker实现省市区三级联动

一、picker选择器的数据由columns属性控制&#xff0c;columns中有几个元素就代表该选择器有多少级&#xff0c;通过change方法来给对应列赋值 this.columns [{values: citys,className: "column1",defaultIndex: 0,flex: 1, //控制每列的宽度},{values: citys[0].…

Windows安装配置node.js

下载安装 下载 访问下载 | Node.js 中文网&#xff0c;下载 推荐使用长期支持版本&#xff0c;但是此次是学习用的&#xff0c;使用最新版本试一下 安装 其实一路next基本就可以了&#xff0c;注意调整下安装目录 查看版本 C:\Users\PC>node -v v22.11.0 C:\Users\PC>…

Mac保护电池健康,延长电池使用寿命的好方法

使用Mac的过程中&#xff0c;如何延长电池的使用寿命是大家非常关心的问题&#xff0c;而养成一个良好的充电习惯能够有效的延长电池的使用寿命 避免过度充电和过度放电能够有效的保护电池&#xff0c;因此长时间的充电与长时间放点都不可取&#xff0c;但是在日常的使用过程中…

Kaggle生物信息学挑战:酶稳定性预测大赛

背景介绍 酶的稳定性是影响其实际应用的关键因素之一。通过定点突变可以改善酶的稳定性,但实验筛选稳定性突变体的成本较高。预测突变对酶稳定性的影响,加速筛选稳定性更高的酶突变体。 概念解释 X 残基&#xff1a;假设 它用 红色表示 &#xff0c; Y 残基&#xff1a;假设…

HarmonyOS NEXT 应用开发实战:十一、知乎日报项目接口使用指南

在本篇博文中&#xff0c;我们将带您完成一个简单的知乎日报项目&#xff0c;主要关注如何使用 h_request库与后端接口进行交互。我们将快速搭建起项目&#xff0c;并利用该库的优势提高开发效率。 选择 h_request 的理由 在进行 HarmonyOS 开发时&#xff0c;原始的 ohos.net…

STM32——串口

1、串口是什么 串口呢&#xff0c;作为硬件调试的时候&#xff0c;是很有用的&#xff0c;我觉得搞嵌入式是经常和串口打交道的 串口&#xff08;Serial Port&#xff09;是一种用于计算机和外部设备之间进行数据通信的接口。它通过串行通信方式传输数据&#xff0c;即一次只…

sparkSQL的UDF,最常用的regeister方式自定义函数和udf注册方式定义UDF函数 (详细讲解)

- UDF&#xff1a;一对一的函数【User Defined Functions】 - substr、split、concat、instr、length、from_unixtime - UDAF&#xff1a;多对一的函数【User Defined Aggregation Functions】 聚合函数 - count、sum、max、min、avg、collect_set/list - UDTF&#xff1a;…

水库大坝安全监测预警方法

一、监测目标 为了确保水库大坝的结构安全性和运行稳定性&#xff0c;我们需要采取一系列措施来预防和减少因自然灾害或其他潜在因素所引发的灾害损失。这不仅有助于保障广大人民群众的生命财产安全&#xff0c;还能确保水资源的合理利用和可持续发展。通过加强大坝的监测和维护…

Java:网络原理-TCP/IP

1.应用层 主要涉及两种情况: (1)使用大佬们已经创建好的应用层协议. (2)自己定义应用层协议. [1]明确前后端交互过程中,需要传递哪些信息. 比如开发一个外卖软件,展示"商家列表" 此处就需要先确定传递的信息是啥. a.请求:用户id; 用户所处的位置 b.响应:商家…

C++类的多重继承演示

一个派生类可以继承多个基类 以下代码演示派生类zzj继承两个基类people、student #include <iostream>using namespace std;class people { private:int m_age; public:people(int age);void print();~people(); };people::people(int age) {cout << "peopl…

信息安全建设方案,网络安全等保测评方案,等保技术解决方案,等保总体实施方案(Word原件)

1 概述 1.1 项目简介 1.2 测评依据 2 被测信息系统情况 2.1 定级情况 2.2 承载的业务情况 2.3 网络结构 2.4 被测对象资产 2.5 上次测评问题整改情况说明 3 测评范围与方法 3.1 测评指标 3.1.1 安全通用要求指标 3.1.2 安全扩展要求指标 3.1.3 其他安全要求指标 3.1.4 不适用安…

vue3学习---案例实现学习

目录 一&#xff0c;京东秒杀导航栏 1&#xff0c;静态样式展示 2&#xff0c;设计步骤 1&#xff0c;html骨架 2&#xff0c;css样式设计 3&#xff0c;vue3动态样式设计 1&#xff0c;v-for使用 1&#xff0c;先在js模块做如下准备 2&#xff0c;v-for遍历 2&#xff…

架构师:如何提高web网站的请求并发响应量?

文章目录 一、提出问题二、相关概念三、如何提高网站请求响应能力&#xff1f;四、负载均衡有那些方式&#xff1f;五、常用微服务架构图及推荐书籍 一、提出问题 今天&#xff0c;突然想到一个问题&#xff0c;双十一&#xff0c;那些电商网站的并发量是多大&#xff1f; 简…