前言:python调用wordcloud的文章和例子很多,笔者这里了就不再赘述了。因为笔者试用了python版和c#版生成的词云图,觉得C#版自动生成的词云图颜色更好看,本来想参考c#版修改python版里的颜色缺省方案,无奈,对C#和python都是小白,暂时作罢,还是直接使用现有。
词云图C#版WordCloudSharp下载地址:https://github.com/AmmRage/WordCloudSharp,里边自带有例子,可以看看。
使用步骤:
1.使用VS编译,生成"WordCloudSharp.dll"。注意:编译的dll版本要和python的版本对应即32位还是64位。
2.直接放上代码,需要注意的是,python调用C#的dll中参数传递的问题。这里涉及到List和Image参数的传递问题,需要引用原C#中使用的这两个类。clr和pandas需要通过pip下载安装。
# -- coding: utf-8 --
import clr # clr是公共运行时环境,这个模块是与C#交互的核心
import pandas as pd #处理文档的库,可读取EXCEL文件
from System.Collections.Generic import List #引用C#中使用的List类
from System.Drawing import Image #引用C#中使用的Image类
clr.FindAssembly("WordCloudSharp.dll") ## 加载c#dll文件
clr.AddReference('WordCloudSharp')
from WordCloudSharp import * # 导入命名空间
image=Image.FromFile('a.jpg') #读取作为背景形状的图
fp = pd.read_excel("a.xls", sheet_name=0, names=['name', 'val'], usecols='B, D') # 读取词频文件
words=List[str]() #转换为C#中的list类
freqs=List[int]()
for i in fp.index.values: #将词名和词频值载入
words.Add(fp.name[i])
freqs.Add(fp.val[i])
wc=WordCloud(2400, 1800, False, None, -1, 1, image, True, 'simhei.ttf')
img =wc.Draw(words, freqs)
img.Save('Wordcloud.png') # 保存的图片命名为Wordcloud.png
吐槽:调用这个dll后生成图的速度明显比在C#下慢的多,l还有内存泄漏的问题,有知道解决方法的童鞋请告知。
本文介绍如何在Python中调用C#编译的WordCloudSharp.dll生成词云图。首先,需要在VS中编译DLL并确保与Python版本匹配。接着,通过引用C#的List和Image类进行参数传递。尽管调用速度较慢且存在内存泄漏问题,但生成的词云图颜色效果更佳。

1639

被折叠的 条评论
为什么被折叠?



