・お題:文章中の単語を並べて表現した画像をワードクラウドというらしい。おしゃれなので、ちょっとやってみたい。
・今回使ったのは、wordcloudというライブラリ。まずはwordcloudをインストールする。正しいことは以下を参照いただきたい。
・文章の例として、公式サイトで例として提供されている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で保存し、ペイントで画像を真っ黒にしたものを使用した(真っ黒にしないと認識されない)。
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")
おしゃれである。
おわり。