import numpy as np import pandas as pd from wordcloud import WordCloud, ImageColorGenerator import matplotlib.pyplot as plt from PIL import Image def draw_cloud(read_name): image = Image.open('/Users/zhoulexin/downloads/学者.png') # 作为背景轮廓图 graph = np.array(image) # 参数分别是指定字体、背景颜色、最大的词的大小、使用给定图作为背景形状 wc = WordCloud(font_path='System/Library/Fonts/Supplemental/Arial Unicode.ttf', background_color='black', max_words=100, mask=graph) fp = pd.read_csv(read_name, encoding='gb18030') # 读取词频文件, 因为要显示中文,故编码为gbk name = list(fp.name) # 词 value = fp.val # 词的频率 for i in range(len(name)): name[i] = str(name[i]) dic = dict(zip(name, value)) # 词频以字典形式存储 wc.generate_from_frequencies(dic) # 根据给定词频生成词云 image_color = ImageColorGenerator(graph) plt.imshow(wc) plt.axis("off") # 不显示坐标轴 plt.show() wc.to_file('scholar词云.png') # 图片命名 if __name__ == '__main__': draw_cloud("/Users/zhoulexin/downloads/李学龙.csv")本段代码报错为AttributeError: 'DataFrame' object has no attribute 'name'如何修改
时间: 2024-03-09 18:47:15 浏览: 126
Matplotlib.pyplot 三维绘图的实现示例
在这段代码中,DataFrame对象没有"name"这个属性,所以代码会报错。你需要将下面的代码:
```
name = list(fp.name) # 词
```
修改为:
```
name = list(fp["name"]) # 词
```
这样就可以获取到"name"这一列的数据了。
阅读全文