• Python Wordcloud报错:Only supported for TrueType fonts,多种解决方案


    Python Wordcloud报错:Only supported for TrueType fonts,多种解决方案。

    报错内容如下:
    2023-10-26T09:35:41.190459839Z Traceback (most recent call last):
    2023-10-26T09:35:41.190502589Z File “lib/task/compute.py”, line 621, in
    2023-10-26T09:35:41.190514101Z compute_match_rule(rule_data)
    2023-10-26T09:35:41.190521681Z File “lib/task/compute.py”, line 557, in compute_match_rule
    2023-10-26T09:35:41.190528938Z word_cloud = gen_word_cloud(sentence)
    2023-10-26T09:35:41.190536512Z File “lib/task/compute.py”, line 87, in gen_word_cloud
    2023-10-26T09:35:41.190543617Z wc.generate(words)
    2023-10-26T09:35:41.190550476Z File “/usr/local/lib/python3.6/site-packages/wordcloud/wordcloud.py”, line 639, in generate
    2023-10-26T09:35:41.190557571Z return self.generate_from_text(text)
    2023-10-26T09:35:41.190567180Z File “/usr/local/lib/python3.6/site-packages/wordcloud/wordcloud.py”, line 621, in generate_from_text
    2023-10-26T09:35:41.190598308Z self.generate_from_frequencies(words)
    2023-10-26T09:35:41.190605934Z File “/usr/local/lib/python3.6/site-packages/wordcloud/wordcloud.py”, line 454, in generate_from_frequencies
    2023-10-26T09:35:41.190613129Z max_font_size=self.height)
    2023-10-26T09:35:41.190620131Z File “/usr/local/lib/python3.6/site-packages/wordcloud/wordcloud.py”, line 508, in generate_from_frequencies
    2023-10-26T09:35:41.190627163Z box_size = draw.textbbox((0, 0), word, font=transposed_font, anchor=“lt”)
    2023-10-26T09:35:41.190634139Z File “/usr/local/lib/python3.6/site-packages/PIL/ImageDraw.py”, line 651, in textbbox
    2023-10-26T09:35:41.190641179Z raise ValueError(“Only supported for TrueType fonts”)
    2023-10-26T09:35:41.190651002Z ValueError: Only supported for TrueType fonts

    简介
    在使用Python的Wordcloud库生成词云图时,有时会遇到报错信息:“Only supported for TrueType fonts”。这个报错通常是由于字体文件不兼容或缺失所致。本文将介绍这个问题的原因和解决方法,并提供相应的代码示例。

    问题原因
    Wordcloud库在生成词云图时需要加载字体文件来渲染文本。默认情况下,Wordcloud库使用的字体为“DroidSansMono.ttf”,它是一个TrueType字体文件。如果系统中没有安装或找不到这个字体文件,就会导致报错。

    解决方法
    为了解决这个问题,我们可以使用以下两种方法之一。

    方法一:指定可用字体
    我们可以在生成词云图时指定一个系统中已经安装的字体文件。

    import matplotlib.pyplot as plt
    from wordcloud import WordCloud
    
    # 指定字体文件路径
    font_path = "/path/to/your/font.ttf"
    
    # 生成词云图
    wordcloud = WordCloud(font_path=font_path).generate(text)
    
    # 显示词云图
    plt.imshow(wordcloud, interpolation='bilinear')
    plt.axis("off")
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在上面的示例代码中,我们通过font_path参数指定了一个字体文件的路径。你需要将/path/to/your/font.ttf替换为实际字体文件的路径。这样,Wordcloud库将使用指定的字体文件来生成词云图,避免了报错。

    方法二:使用其他字体文件
    如果你没有特定的字体需求,你也可以使用其他已经安装的字体文件来生成词云图。

    import matplotlib.pyplot as plt
    from wordcloud import WordCloud
    
    # 指定字体名称
    font_name = "Arial"
    
    # 生成词云图
    wordcloud = WordCloud(font_path=None, font_name=font_name).generate(text)
    
    # 显示词云图
    plt.imshow(wordcloud, interpolation='bilinear')
    plt.axis("off")
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在上面的示例代码中,我们通过font_name参数指定了一个系统中已经安装的字体名称,例如"Arial"。由于我们没有指定具体的字体文件路径,Wordcloud库会尝试使用指定的字体名称来生成词云图。这样,我们也可以避免“Only supported for TrueType fonts”的报错。

    注意,如果上面方法还有问题,可以尝试检查系统是否安装字体库:

    FROM python:3.6
    
    WORKDIR /app
    ADD . /app
    ADD ./requirements.txt /app
    
    RUN  sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list \
        && apt update \
        && apt install libboost-python-dev tzdata -y \
        && apt install libfreetype6 -y \
        && apt install gcc libffi-dev python3-dev libevent-dev libxml2-dev libxslt-dev -y\
        && rm -rf /var/lib/apt/lists/* \
        && pip install -i http://mirrors.aliyun.com/pypi/simple --upgrade pip --trusted-host mirrors.aliyun.com \
        && pip install -i http://mirrors.aliyun.com/pypi/simple setuptools==58.0.1 --trusted-host mirrors.aliyun.com \
        && pip install -i http://mirrors.aliyun.com/pypi/simple pytest-benchmark==3.4.1 --trusted-host mirrors.aliyun.com \
        && pip install -i http://mirrors.aliyun.com/pypi/simple pytest-runner==5.3.1 --trusted-host mirrors.aliyun.com \
        && pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r /app/requirements.txt --trusted-host pypi.tuna.tsinghua.edu.cn --default-timeout=1000
    
    ENV PYTHONPATH "${PYTHONPATH}:/app"
    ENV TZ Asia/Shanghai
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    检查对应PIL版本是否匹配wordcloud:

    Pillow==10.0.1
    wordcloud==1.9.2
    
    • 1
    • 2

    总结
    在使用Python的Wordcloud库生成词云图时,如果遇到“Only supported for TrueType fonts”的报错,我们可以通过指定可用的字体文件或使用其他已经安装的字体文件来解决这个问题。通过以上的方法,我们可以顺利生成并显示词云图,从而实现更好的数据可视化效果。

  • 相关阅读:
    老卫带你学---leetcode刷题(43. 字符串相乘)
    如何保护网站的网络安全
    【职场成长】一篇文章,讲清复盘!
    【计算机视觉面经二】卷积神经网络中的理解:通道(channel)和空间(spatial)信息
    最新版SpringBoot整合Mybatis-plus,实现增删改查(CRUD)
    若依微服务如何处理Long类型精度丢失问题?
    Spring Security 为用户示例添加角色
    [附源码]Python计算机毕业设计java高校社团管理系统
    Spring/SpringBoot注解用法解析/案例
    FPGA - 7系列 FPGA内部结构之Clocking -04- 多区域时钟
  • 原文地址:https://blog.csdn.net/u014374009/article/details/134061576