我正在尝试生成由一些硬编码字符串形成的word_cloud的svg(截至目前,这些字符串将被动态生成)。 下面是生成word_cloud的Python代码:
from os import path
from wordcloud import WordCloud
d = path.dirname(__file__)
# Read the whole text.
#text = open(path.join(d, 'test.txt')).read()
mytext = ['hello, hi, ibm, pune, hola']
# Generate a word cloud image
wordcloud = WordCloud().generate(text)
import svgwrite
# Display the generated image:
# the matplotlib way:
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
现在我没有使用plt.show(),而是想将wordcloud变量传递给svgwrite方法,如下所示:
svg_document = svgwrite.Drawing(filename = "test-svgwrite.svg",profile = 'full')
svg_document.add(svg_document.text(wordcloud,
insert = (210, 110)))
svg_document.tostring()
svg_document.save()
但是,这个创建的SVG不包含任何wordcloud,只包含文本(如下面的屏幕截图所示): check the screenshot here
答案 0 :(得分:1)
我在寻找同样的事情时发现了这一点。我从svgwrite获得了相同的结果,而是使用了matplotlib的功能。
在matplotlib的documentation中,讨论了更改后端使用的格式。当后端使用SVG格式时,绘图可以保存为.svg
在导入部分:
$ git checkout origin/master foo.js
Error: unknown command "post-checkout" for "git-lfs"
Run 'git-lfs --help' for usage.
生成WordCloud后
import matplotlib
matplotlib.use('SVG') #set the backend to SVG
import matplotlib.pyplot as plt
savefig(filename)自动将其保存为SVG格式,因为这是后端设置的内容。
答案 1 :(得分:1)
使用matplotlib遇到一些问题(虽然它将另存为“ .svg”,但它将与wordcloud结合使用光栅图形),我想出了另一种方法
wordcloud = WordCloud()
wordcloud.generate_from_frequencies(frequencies=features)
wordcloud_svg = wordcloud.to_svg(embed_font=True)
f = open("filename.svg","w+")
f.write(wordcloud_svg )
f.close()
embed_font布尔值可防止单词重叠。 另外,您还有很大的自由度可以修改wordcloud_svg来更改颜色,字体等。它具有类似xml的结构(打印它:))