簡體   English   中英

如何將python wordcloud元素傳遞給svgwrite方法以生成wordcloud的svg?

[英]How to pass a python wordcloud element to svgwrite method to generate a svg of the wordcloud?

我正在嘗試生成由一些硬編碼字符串形成的 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")

現在,我想將 wordcloud 變量傳遞給 svgwrite 方法,而不是使用 plt.show(),如下所示:

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,只有文本(如下圖所示):在此處查看屏幕截圖

面對使用 matplotlib 的一些問題(它將使用光柵圖形與 wordcloud 結合使用,盡管它會被保存為“.svg”),我想出了另一種方法

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 的結構(打印 :))

我在做同樣的事情時發現了這一點。 我從 svgwrite 得到了相同的結果,並最終使用了 matplotlib 的特性。

在 matplotlib 的文檔中,討論了更改后端使用的格式。 當后端使用 SVG 格式時,繪圖可以保存為 .svg

在進口部分:

import matplotlib
matplotlib.use('SVG') #set the backend to SVG
import matplotlib.pyplot as plt

生成 WordCloud 后

fname = "cloud_test"
plt.imshow(wordcloud, interpolation="bilinear") 
plt.axis("off")
fig = plt.gcf() #get current figure
fig.set_size_inches(10,10)  
plt.savefig(fname, dpi=700)

savefig(filename) 自動將其保存為 SVG 格式,因為這是后端設置的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM