鱼C论坛

 找回密码
 立即注册

[已解决]简单的登录界

[复制链接]
 楼主| 发表于 2024-5-30 09:30:55 | 显示全部楼层
FishC 发表于 2024-5-29 10:18
如果出现了一直打印 `无 0 0 0 0` 的结果,可能是因为在解析HTML时无法找到相应的元素。请确保你使用的 ...

ValueError: Only supported for TrueType fonts
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-30 09:31:10 | 显示全部楼层
豪在这学python 发表于 2024-05-30 09:30
ValueError: Only supported for TrueType fonts


这个错误通常是由于缺少支持TrueType字体的库导致的。为了解决这个问题,你可以尝试安装并使用可支持TrueType字体的库,如`matplotlib`的`font_manager`模块中的TrueType字体。以下是示例代码:
import matplotlib.font_manager as fm

# 指定一个支持的TrueType字体文件路径
font_path = 'path/to/your/truetype/font.ttf'

# 加载字体
prop = fm.FontProperties(fname=font_path)

将上述代码应用到你的代码中,确保提供一个支持TrueType字体的文件路径。这样就可以正常显示中文字符了。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-30 19:11:17 | 显示全部楼层
FishC 发表于 2024-5-29 10:18
如果出现了一直打印 `无 0 0 0 0` 的结果,可能是因为在解析HTML时无法找到相应的元素。请确保你使用的 ...

"""数据可视化,歌单介绍词云图"""
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import pandas as pd
import jieba
import time


def data_visualization_of_music_wordcloud():
    """歌单介绍词云图"""
    df = pd.read_csv('music_data/music_detail.csv', header=None)
    text = ''

    print("正在生成歌单介绍词云图片...")

    # 输出进度条
    t = 60
    start = time.perf_counter()

    for i in range(t + 1):
        finsh = "▓" * i
        need_do = "-" * (t - i)
        progress = (i / t) * 100
        dur = time.perf_counter() - start

        print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(progress, finsh, need_do, dur), end="")

        time.sleep(0.02)

    for line in df[2]:
        text += ' '.join(jieba.cut(line, cut_all=False))

    background_image = plt.imread('music_image/img/background_image.jpg')

    stopwords = set('')
    stopwords.update(
        ['封面', 'none介绍', '介绍', '歌单', '歌曲', '我们', '自己', '没有', '就是', '可以', '知道', '一起', '不是',
         '因为', '什么', '时候', '还是', '如果', '不要', '那些', '那么', '那个', '所有', '一样', '一直', '不会', '现在',
         '他们', '这样', '最后', '这个', '只是', '有些', '其实', '开始', '曾经', '所以', '不能', '你们', '已经', '后来',
         '一切', '一定', '这些', '一些', '只有', '还有'])

    wc = WordCloud(
        background_color='white',
        mask=background_image,
        font_path='./font_resources/STZHONGS.ttf',
        max_words=2000,
        max_font_size=150,
        random_state=30,
        stopwords=stopwords
    )
    wc.generate_from_text(text)

    # 看看词频高的有哪些,把无用信息去除
    process_word = WordCloud.process_text(wc, text)
    sort = sorted(process_word.items(), key=lambda e: e[1], reverse=True)
    # print(sort[:50])

    img_colors = ImageColorGenerator(background_image)
    wc.recolor(color_func=img_colors)
    plt.imshow(wc)
    plt.axis('off')

    # 保存图片
    wc.to_file("./music_image/music_wordcloud.png")

    # 显示图片
    plt.show()

    print("\n已生成歌单介绍词云图片,保存至 music_image/music_wordcloud.png")
解释代码,给注释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-30 19:13:04 | 显示全部楼层
豪在这学python 发表于 2024-05-30 19:11
"""数据可视化,歌单介绍词云图"""
from wordcloud i ...


这段代码是用于生成歌单介绍的词云图的函数。以下是对代码的解释和注释:
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import pandas as pd
import jieba
import time

def data_visualization_of_music_wordcloud():
    """歌单介绍词云图"""
    df = pd.read_csv('music_data/music_detail.csv', header=None)
    text = ''

    # 读取存储歌单介绍的CSV文件

    print("正在生成歌单介绍词云图片...")

    # 输出进度条
    t = 60
    start = time.perf_counter()

    for i in range(t + 1):
        finsh = "#" * i
        need_do = "-" * (t - i)
        progress = (i / t) * 100
        dur = time.perf_counter() - start

        print("\r{:^3.0f}% [{}=>{}] {:.2f}s".format(progress, finsh, need_do, dur), end="")
        time.sleep(0.02)

    # 将所有歌单介绍文本合并为一个字符串
    for line in df:
        text += ' '.join(jieba.cut(line, cut_all=False))

    # 设置词云背景图片
    background_image = plt.imread('music_image/img/background_image.jpg')

    # 设置停用词
    stopwords = set('')
    stopwords.update(
        # 这里可以添加一些你希望过滤掉的停用词
    )

    # 创建词云对象
    wc = WordCloud(
        background_color='white',
        mask=background_image,
        font_path='./font_resources/STZHONGS.ttf',
        max_words=2000,
        max_font_size=150,
        random_state=30,
        stopwords=stopwords
    )
    
    # 生成词云图
    wc.generate_from_text(text)

    # 根据词频进行排序
    process_word = WordCloud.process_text(wc, text)
    sort = sorted(process_word.items(), key=lambda e: e[1], reverse=True)

    # 设置词云颜色
    img_colors = ImageColorGenerator(background_image)
    wc.recolor(color_func=img_colors)

    # 显示词云图
    plt.imshow(wc)
    plt.axis('off')

    # 保存词云图
    wc.to_file("./music_image/music_wordcloud.png")

    # 显示图片
    plt.show()

    print("\n已生成歌单介绍词云图片,保存至 music_image/music_wordcloud.png")

代码使用了`wordcloud`库来生成词云图。它通过读取存储歌单介绍的CSV文件,并将其中的文本数据合并为一个字符串。然后使用`jieba`库进行中文分词处理。接着,使用词云对象`WordCloud`创建词云图,设置了背景颜色、背景图片、字体、词数等属性。最后将生成的词云图保存并展示出来。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 01:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表