作者出版频率词云图
词云图可用作数据频率的比较。在词云图中,比较多频的数据,其名称会以较大的字体演示;频率较少的数据,其名称会以一个较小的字体演示。
制作词云图的方法的方法
坊间有现成制作词云图的软件,但是它们未必能处理大量的数据,又或未能以自设的图案模版及色调制作词云图,因此我们在此介绍如何利用 Python 电脑程式来制作词云图,用此方法可以处理大量数据,并可以由制作者自己决定词云图内所显示数据名称的数量和图案的形状与颜色。
我们首先要准备一个包含了所有数据名称的档案(可以是 .txt 文字档),这档案(如图三)只需要把数据名称每一次的出现列出来,不用包含统计。为了在词云图中比较《周报》的作者频率,我们利用了由 def create_full_name_list
从《周报》元数据中抽出共 55,506 个作者名称的档案。另外,亦需要准备一个词云图形状的图案模版,然后,使用本页的电脑程式,把作者名称的档案处理,词云图就出现了。

图三:《周报》的作者数据名称档案(节录)
使用不同的图案模版,可以使词云图的形状和颜色有所改变。图四是利用了一个净色的长方形图案,通过电脑程式制作出来的。

图四:《周报》作者出版频率词云图
由于《周报》内刊印了不少花生漫画,因此我们亦使用了史路比和他的狗屋的形状,分别制作了图五和图六。

图五:史路比形状的《周报》作者出版频率词云图

图六:史路比狗屋形状的《周报》作者出版频率词云图(包含一百个数据名称)
函式 def MakeImage
的指令可制作云图,电脑程式的最后一行是进行这函式:
MakeImage("Image_Template.jpg", text, 100, "out_WordCloud.jpg")
制作者可以在第一个参数填上图案模版的档案名称,再在第三个参数填上词云图内数据名称的数量,并在第四个参数填上制作出来的词云图档案名称,把本页的电脑程式进行一次,词云图就会根据指定的图案、数据名称的数量、和词云图档案名称出现了。使用史路比狗屋的图六包含了一百个数据名称,而图七则包含了三百个数据名称。

图七:史路比狗屋形状的《周报》作者出版频率词云图(包含三百个数据名称)
词云的颜色是预设的,若果希望于词云图中使用图案模版的色调,可以把 plt.imshow
的指示改作:
plt.imshow(wc.recolor(color_func=image_colors))
狗屋的原图色调是红色,若使用以上的指示,图八的词云图就会出现了。

图八:使用史路比狗屋原图色调的《周报》作者出版频率词云图
电脑程式
以下的电脑程式(Python 3.7),可以用作准备词云图。
import numpy as np
import pandas as pd
from os import path
from PIL import Image
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import matplotlib.pyplot as plt
font_path = "msjh.ttc"
file = open("Author name weekly.txt", encoding = "utf-8")
text = file.read()
file.close()
def MakeImage(image, text, 100, outfilename):
mask = np.array(Image.open(image))
# generate word cloud
wc = WordCloud(font_path = font_path, background_color="white", max_words=num, collocations = False, mask=mask)
wc.generate((text))
image_colors = ImageColorGenerator(mask)
plt.imshow(wc)
plt.axis("off")
plt.savefig(outfilename)
plt.show()
plt.imshow(wc.recolor(color_func=image_colors))
MakeImage("Image_Template.jpg", text, 100, "out_WordCloud.jpg")