from wordcloud import WordCloud import matplotlib.pyplot as plt #plt.rcParams['font.family'] = 'YaHei Consolas Hybrid' from PIL import Image import numpy as np text='''驾驶体验良好:19 操控出色:15 乘坐感受还可以:9 音响品质好:9 配置丰富:9 整体空间出色:8 静谧性强:7 内饰好看:7 动力十足:7 车机操作流畅:6 配置实用:6 动力输出平顺:5 底盘调校好:5 外观时尚:4 车机科技感强:4 内饰质感不错:3 配置鸡肋:8 有异响:4 人机工程较差:3 储物空间较少:2 续航表现较差:2 后备厢空间小:1 风噪大:1 车机功能简单:1 ''' text=text.replace('\n', ' ').replace(":", ':') input_text =text print(text) # 将用户输入的词汇和出现次数转换为一个字典 words_dict = {} for word in input_text.split(): word, count = word.split(":") words_dict[word] = int(count) car_mask = np.array(Image.open("/home/coder/2233.png")) # 创建WordCloud对象并生成词云图 wordcloud = WordCloud(font_path='/home/coder/project/SourceHanSerifSC-SemiBold.otf',width=1600, height=800,background_color="rgba(255, 255, 255, 0)", mode="RGBA",mask=car_mask) wordcloud.generate_from_frequencies(frequencies=words_dict) plt.figure() plt.rcParams["savefig.dpi"] = 3000 plt.imshow(wordcloud, interpolation="bilinear") plt.axis("off") print('OK') image = wordcloud.to_image() plt.show() image.save("大众ID.6.CORZZ.png") 跑出来结果是这样的:(base) root@4235009d9f30:/home/coder# /root/anaconda3/bin/python /home/coder/project/词云生成汽车图.py 驾驶体验良好:19 操控出色:15 乘坐感受还可以:9 音响品质好:9 配置丰富:9 整体空间出色:8 静谧性强:7 内饰好看:7 动力十足:7 车机操作流畅:6 配置实用:6 动力输出平顺:5 底盘调校好:5 外观时尚:4 车机科技感强:4 内饰质感不错:3 配置鸡肋:8 有异响:4 人机工程较差:3 储物空间较少:2 续航表现较差:2 后备厢空间小:1 风噪大:1 车机功能简单:1 Traceback (most recent call last): File "/home/coder/project/词云生成汽车图.py", line 43, in <module> wordcloud.generate_from_frequencies(frequencies=words_dict) File "/root/anaconda3/lib/python3.8/site-packages/wordcloud/wordcloud.py", line 453, in generate_from_frequencies self.generate_from_frequencies(dict(frequencies[:2]), File "/root/anaconda3/lib/python3.8/site-packages/wordcloud/wordcloud.py", line 508, in generate_from_frequencies box_size = draw.textbbox((0, 0), word, font=transposed_font, anchor="lt") File "/root/anaconda3/lib/python3.8/site-packages/PIL/ImageDraw.py", line 671, in textbbox raise ValueError("Only supported for TrueType fonts") ValueError: Only supported for TrueType fonts应该如何解决
时间: 2024-04-19 12:27:27 浏览: 92
这个错误是因为你使用的字体文件不是 TrueType 字体。WordCloud 类只支持 TrueType 字体,因此你需要确保使用的字体文件是 TrueType 格式的。
解决方法是更换字体文件,可以在网上搜索并下载 TrueType 格式的字体文件,然后将其路径传递给 `font_path` 参数。确保将下载的字体文件放在正确的路径下,并将路径正确地指定给 `font_path` 参数。
例如,你可以在以下网站下载 TrueType 字体文件:
- https://www.fontsquirrel.com/
- https://www.dafont.com/
选择一个适合你的需求的字体,下载后将其路径传递给 `font_path` 参数即可解决该问题。
另外,如果你已经安装了合适的 TrueType 字体文件,但仍然出现该错误,请确保指定的字体文件路径是正确的。可以使用绝对路径或相对路径。
相关问题
解释一下这串代码import requests import xlwt import re from wordcloud import WordCloud import jieba import matplotlib.pyplot as plt
这串代码是Python代码,主要使用了requests、xlwt、re、WordCloud、jieba和matplotlib.pyplot等库,实现了一些文字处理相关的功能,比如从网页中获取数据、将数据存储到Excel表格中、进行正则表达式匹配、生成词云等。
import numpy as np import cartopy.crs as ccrs import cartopy.feature as cfeat from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER from cartopy.io.shapereader import Reader import matplotlib.pyplot as plt import matplotlib.ticker as mticker from mpl_toolkits.basemap import Basemap from osgeo import gdal from matplotlib.colors import BoundaryNorm import matplotlib as mpl from matplotlib.pyplot import plot, savefig import matplotlib.patches as mpatches # mpl.use('Agg') from matplotlib import rcParams
这段代码是用于绘制地图和数据可视化的Python代码。它使用了一些常见的地理信息处理和绘图库,包括numpy、cartopy、matplotlib和basemap。其中,numpy用于数据处理,cartopy用于地图投影和特征绘制,matplotlib用于绘图,basemap用于创建地图。此外,还导入了其他一些相关的模块和函数。
代码中的注释提供了一些有关代码功能和用法的说明。如果您有具体的问题或需要进一步的解释,请随时提问。
阅读全文