python下调用C#版的词云图dll生成词云图

本文介绍如何在Python中调用C#编译的WordCloudSharp.dll生成词云图。首先,需要在VS中编译DLL并确保与Python版本匹配。接着,通过引用C#的List和Image类进行参数传递。尽管调用速度较慢且存在内存泄漏问题,但生成的词云图颜色效果更佳。

前言: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还有内存泄漏的问题,有知道解决方法的童鞋请告知。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值