いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【Python】ワードクラウドしてみたい

・お題:文章中の単語を並べて表現した画像をワードクラウドというらしい。おしゃれなので、ちょっとやってみたい。

 

・今回使ったのは、wordcloudというライブラリ。まずはwordcloudをインストールする。正しいことは以下を参照いただきたい。

amueller.github.io

 

・文章の例として、公式サイトで例として提供されているconstitution.txtを使う。先に示した公式サイトから、"constitution.txt"をダウンロードし、カレントディレクトリに保存する(半角英数ならたぶん行けるので、好きな文章をtxtで保存して使っても良い)。以下のコマンドを実行する。

from wordcloud import WordCloud
text = open("constitution.txt", encoding="utf8").read()
wordcloud = WordCloud(max_font_size=50).generate(text)

・画像をファイルとして出力する。

wordcloud.to_file("constitution.png")

・今使っているディレクトリに、以下のファイルが生成された。黒地に緑系の配色で御洒落な感じ。

・ちょっと爽やかな感じにしたいので、背景を白にする。background_colorの引数で、背景色を指定できる。

from wordcloud import WordCloud
text = open("constitution.txt", encoding="utf8").read()
wordcloud = WordCloud(max_font_size=50,background_color="white").generate(text)
wordcloud.to_file("constitution.png")

・せっかくなので、文字を七色にしたい。colormapで、色のセットを選択できる。カラーセットはmatplotlibのセット。

from wordcloud import WordCloud
text = open("constitution.txt", encoding="utf8").read()
wordcloud = WordCloud(max_font_size=50,background_color="white",colormap="rainbow").generate(text)
wordcloud.to_file("constitution.png")

・もっと緩い感じにしたい。フォントを変える。参照しているディレクトリに、フォントのファイル(.ttfファイル)を保存し、引数font_pathでフォントを指定する。

from wordcloud import WordCloud
text = open("constitution.txt", encoding="utf8").read()
wordcloud = WordCloud(max_font_size=50,background_color="white",colormap="rainbow",font_path="azuki.ttf").generate(text)
wordcloud.to_file("constitution.png")

・せっかくなので、マスクを作って切り抜きたい。使用しているディレクトリに、切り抜く型として.pngファイルを保存する。今回使用した型は、icooon-monoの画像をpngで保存し、ペイントで画像を真っ黒にしたものを使用した(真っ黒にしないと認識されない)。

icooon-mono.com

 

from PIL import Image
import numpy as np
head_mask = np.array(Image.open("head.png"))

wordcloud = WordCloud(max_font_size=50,background_color="white",colormap="rainbow",font_path="azuki.ttf",mask=head_mask).generate(text)
wordcloud.to_file("constitution.png")

おしゃれである。

 

おわり。