首页 > 其他分享 >Echarts制作时变数据可视化+2024 QQ群聊记录制作词云图

Echarts制作时变数据可视化+2024 QQ群聊记录制作词云图

时间:2024-04-28 23:46:25浏览次数:26  
标签:QQ 群聊 云图 content file import line 制作

时变数据可视化

Echarts其实就是个js文件,在开头导入一下就好了
其实这部分我没有做太多时间,大部分代码都是gpt直接生成的(乐)
所以这里只分享一下我觉得代码里比较有意思的部分
先放效果图


图中渐变效果的代码(来源CSDN某个博主)

            lineStyle: {
                shadowColor: "#3D5DF4",
                shadowOffsetX: 0,
                shadowOffsetY: 9,
                shadowBlur: 10,
                color: new echarts.graphic.LinearGradient(0, 1, 1, 0, [
                    { offset: 0, color: "#94C2FD00" },
                    { offset: 0.4, color: "#3D5DF4" },
                    { offset: 1, color: "#5B8FF900" },
                ]),
            },
            smooth: true,
            symbolSize: 0.01,
            emphasis: {
                scale: 1000,
                itemStyle: {
                    color: "#3D5DF4",
                    borderColor: "#FFFFFF",
                    borderWidth: 3,
                    borderType: "solid",
                }
            }

2024年了如何用QQ群聊记录制作词云图

其实跟之前大差不差,只不过现在的QQ加入了超级表情,然鹅超级表情在电脑端不显示,所以需要在数据处理一下
我的代码是分成了数据预处理+生成词云图两部分

数据预处理

目前能搜到的聊天记录词云图大部分是用的私聊记录,但是我想做群聊的
而且我和我的朋友们非常爱改群昵称,压根没有固定的(乐
所以在预处理阶段考虑把时间戳和群昵称那一行直接替换成空

import re

# 打开原始文件并读取内容
with open('./哈喽大家早生蚝.txt', 'r', encoding='utf-8') as f:
    file_content = f.read()

# 使用正则表达式替换匹配的内容
# 替换时间戳和群昵称
file_content = re.sub(r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (.*?)\n', "", file_content)
# QQ在早上十点前发的消息,小时部分只会显示一位数,所以特殊处理一下~
file_content = re.sub(r'(\d{4}-\d{2}-\d{2} \d{1}:\d{2}:\d{2}) (.*?)\n', "", file_content)
# 查看聊天记录的时候,发现我的朋友们经常会艾特其他人,所以把这个也处理下
file_content = re.sub(r'@[\S \S]+', "", file_content)
# 这里处理的是消息记录里不会显示的[图片][表情],还有超级表情。
# 由于超级表情会显示成 [仔细分析]请使用最新版手机QQ体验新功能,但是我们这里只替换了带框的部分,所以后续还会再次替换
file_content = re.sub(r'\[[\S \S]+\]', "", file_content)
# 把分享的链接也处理一下
file_content = re.sub(r'http\S+', "", file_content)


# 打开新文件并写入处理后的内容
with open('output_file.txt', 'w', encoding='utf-8') as new_file:
    new_file.write(file_content)

生成词云图

生成词云图部分也是改自CSDN上某位博主的,but博主写的是提取某一位群友的聊天记录制作词云,遂魔改

lines = file.readlines()
datas = []
for line in lines:
    # 生成的词云图里有一些词我不想看到!可以在这里统统替换
    line = line.replace("请使用最新版手机QQ体验新功能", "")
    line = line.replace("\n", "")
    datas.append(line)

全代码

import jieba
import re
import collections
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
from PIL import Image
import matplotlib.pyplot as plt

file = open("./output_file.txt", "r", encoding="utf-8")

stopwords = set()
content = [line.strip() for line in open('./cn_stopwords.txt','r', encoding='utf-8').readlines()]
stopwords.update(content)

## 分析群聊天记录,并通过jieba分词
lines = file.readlines()
datas = []
for line in lines:
    line = line.replace("请使用最新版手机QQ体验新功能", "")
    line = line.replace("\n", "")
    datas.append(line)

words = []
for s in datas:
    thelist = jieba.cut(s, cut_all=False)
    for word in thelist:
        if word not in stopwords:
            if len(word) > 1:
                words.append(word)

word_counts = collections.Counter(words)
words_top20 = word_counts.most_common(20)
print(words_top20)  # 打印前20词频

## 制作词云
backgroud_Image = plt.imread('./true.jpg')  # 选择背景图片,图片要与.py文件同一目录
print('加载图片成功!')

## 设置词云样式
wc = WordCloud(
    background_color='white',  # 设置背景颜色
    mask=backgroud_Image,  # 设置背景图片
    font_path='C:\Windows\Fonts\msyhl.ttc',  # 若是有中文的话,这句代码必须添加,不然会出现方框,不出现汉字
    max_words=2000,  # 设置最大现实的字数
    stopwords=STOPWORDS,  # 设置停用词
    max_font_size=150,  # 设置字体最大值
    random_state=30  # 设置有多少种随机生成状态,即有多少种配色方案
)

wc.generate_from_frequencies(word_counts)  # 通过频率生成词云
print('开始加载文本')

img_colors = ImageColorGenerator(backgroud_Image)  # 改变字体颜色
wc.recolor(color_func=img_colors)  # 字体颜色为背景图片的颜色

plt.imshow(wc)  # 显示词云图
plt.axis('off')  # 是否显示x轴、y轴下标
plt.show()
print('生成词云成功!')

最后放张结果图~

标签:QQ,群聊,云图,content,file,import,line,制作
From: https://www.cnblogs.com/yyiiing/p/18164763

相关文章

  • 差分包制作
    1.版本1;将第一次编译产生的差分包:target_file放置于代码根目录(和out目录同级);并重命名为ota12.版本2;修改build文档,第二次编译产生产分包:target_file放置于代码根目录(和out目录同级);并重命名为ota23.指令:./build/tools/releasetools/ota_from_target_files -v -i ot......
  • 在电脑桌面上制作可视化进度日程待办清单,效率翻倍
    对于使用电脑办公的上班族来说,提升工作效率和保证任务的准时完成是至关重要的。在电脑桌面上制作可视化进度日程待办清单,是实现这一目标的有效方法。因为这样能够让我们一目了然地了解当天及未来的工作任务,从而合理规划时间,确保每个任务都能得到妥善处理。那么我们如何在Windows......
  • 短视频app制作,实现数据隔离可选方案有很多
    一、JDBC数据源隔离在短视频app制作中,数据隔离需要对DB,Redis,RabbitMQ进行数据隔离通过实现Spring动态数据源AbstractRoutingDataSource,通过ThreadLocal识别出来压测数据,如果是压测数据就路由到影子库,如果是正常流量则路由到主库,通过流量识别的改造,各个服务都已经能够......
  • 制作表格/表单并用CSS美化
    制作表格用到background-img设置表头背景图片(导航栏也可以这么用)用到设置单双行不同颜色的方法用到合并列colspan=number,合并行用rowspan=number用到设置表格范围宽度方法<html><head><!--Ctrl+S保存后就可以刷新浏览器预览--><metahttp-equiv="Content-t......
  • [官方培训] 24-UE 非线性动画制作流程 Epic 戴浩军
    传送门:[官方培训]24-UE非线性动画制作流程|Epic戴浩军_哔哩哔哩_bilibili一.UE非线性动画制作流程参考《堡垒之夜预告片》白皮书,虽发布于2018年,但其包含的实时动画制作流程所涉及的核心概念,至今仍然适用 在开始设计制作流程前,需先明确流程目标 设计工作流......
  • Linux 环境下制作 deb 软件包
    一、简介前面的笔记中已经展示过了,怎么移植的一个工具境到ARM环境中,对于使用buildroot和yocto的朋友来说,此笔记就没有作用了,因为管理工具包会帮我们把这个工作处理了,就算需要自定义包操作方式也不一样,可以参考上一篇笔记。而对于ubuntu这样的操作系统,虽然可以使用apt-g......
  • dotnet 使用 MSTestRunner 将单元测试制作为独立可执行文件
    以往的单元测试都是不能单独作为一个独立的可执行文件跑的,需要在VisualStudio或VSTest或dotnettest里面运行。这就限制了运行单元测试的环境了,有时候开发者可能期望在无SDK或开发环境下执行单元测试,这时就可以用到本文介绍的MSTestRunner功能,将单元测试制作为独立可执......
  • 新手也能学会的甘特图制作教程
    ##甘特图是什么?甘特图(GanttChart)是一种以图表形式直观展示项目计划的工具,由20世纪初的管理学家亨利·甘特(HenryGantt)发明并命名。它具有以下几个主要特点:1.水平时间轴甘特图的横轴是一条时间轴,通常按天、周或月来刻度,直观展示了项目从开始到结束的整个时间跨度。2.任......
  • 3568F-Linux系统启动卡制作及系统固化
     ......
  • 21如何通过excel表制作燃尽图
    一,新建一个excel表, 二、选中整个表格,插入—数据透视图,然后默认确定,出现右侧字段  三、在本例中,右侧字段长按天数拖入下方的“轴”中作为横坐标,剩余的两项托入同水平的“值”中作为纵坐标 四、生成柱状图,点击插入—折线图,任选 五、燃尽图完成 ......