The overall profile

Python word cloud is a very useful and powerful class library. Personally, the blogger recommend github:github.com/amueller/wo… This article took an hour and a half to write and 15 minutes to read. By the end of this article, you’ll be able to use WordCloud

Chinese word clouds and other key points will be covered in the next article

Quickly generate word clouds

from wordcloud import WordCloud f = open(u'txt/AliceEN.txt','r').read() wordcloud = WordCloud(background_color="white",width=1000, height=860, Margin =2). Generate (f) # width,height,margin WordCloud(font_path = r'd :\Fonts\simkai.ttf'). Generate (f) # You can use the font_path parameter to set the font set #background_color to the background color. The default color is black import matplotlib.pyplot as plt plt.imshow(wordcloud) plt.axis("off") plt.show() wordcloud.to_file('test.png') # Save the image, but in the example of module 3 the image size will be saved by maskCopy the code

Customize font colors

This code comes primarily from WordCloud’s Github, where you can download the example

#! /usr/bin/env python """ Colored by Group Example ======================== Generating a word cloud that assigns colors to  words based on a predefined mapping from colors to words """ from wordcloud import (WordCloud, get_single_color_func) import matplotlib.pyplot as plt class SimpleGroupedColorFunc(object): """Create a color function object which assigns EXACT colors to certain words based on the color to words mapping Parameters ---------- color_to_words : dict(str -> list(str)) A dictionary that maps a color to the list of words. default_color : str Color that will be assigned to a word that's not a member of any value from color_to_words. """ def __init__(self, color_to_words, default_color): self.word_to_color = {word: color for (color, words) in color_to_words.items() for word in words} self.default_color = default_color def __call__(self, word, **kwargs): return self.word_to_color.get(word, self.default_color) class GroupedColorFunc(object): """Create a color function object which assigns DIFFERENT SHADES of specified colors to certain words based on the color  to words mapping. Uses wordcloud.get_single_color_func Parameters ---------- color_to_words : dict(str -> list(str)) A dictionary that maps a color to the list of words. default_color : str Color that will be assigned to a word that's not a member of any value from color_to_words. """ def __init__(self, color_to_words, default_color): self.color_func_to_words = [ (get_single_color_func(color), set(words)) for (color, words) in color_to_words.items()] self.default_color_func = get_single_color_func(default_color) def get_color_func(self, word): """Returns a single_color_func associated with the word""" try: color_func = next( color_func for (color_func, words) in self.color_func_to_words if word in words) except StopIteration: color_func = self.default_color_func return color_func def __call__(self, word, **kwargs): return self.get_color_func(word)(word, **kwargs) text = """The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is  better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!" "" # Since the text is small collocations are turned off and text is lower-cased wc = Color_to_words = {# words below will be colored with # words below will be colored a green single color function '#00ff00': ['beautiful', 'explicit', 'simple', 'sparse', 'readability', 'rules', 'practicality', 'explicitly', 'one', 'now', 'easy', 'obvious', 'better'], # will be colored with a red single color function 'red': ['ugly', 'implicit', 'complex', 'complicated', 'nested', 'dense', 'special', 'errors', 'silently', 'ambiguity', 'guess', 'hard'] } # Words that are not in any of the color_to_words values # will be colored with a grey single color function default_color = 'grey' # Create a color function with single tone # grouped_color_func = SimpleGroupedColorFunc(color_to_words, default_color) # Create a color function with multiple tones grouped_color_func = GroupedColorFunc(color_to_words, If you can also set the color_func parameter to a picture, see the next section for details wc.recolor(color_func=grouped_color_func) # Plot plt.figure() plt.imshow(wc, interpolation="bilinear") plt.axis("off") plt.show()Copy the code

Use the background picture to generate a word cloud and set the stop word word set

The code is mainly from WordCloud’s Github, where you can also download the example and the original images and renderings

#! /usr/bin/env python """ Image-colored wordcloud ======================= You can color a word-cloud by using an image-based coloring strategy implemented in ImageColorGenerator. It uses the average color of the region occupied by the word in a source image. You can combine this with masking - pure-white will be interpreted as 'don't occupy' by the WordCloud object when passed as mask. If you want white as a legal color, you can just pass a different image to "mask", but make sure the image shapes line up. """ from os import path from PIL import Image import numpy as np import matplotlib.pyplot as plt from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator d = path.dirname(__file__) # Read the whole text. text = open(path.join(d, 'alice.txt')).read() # read the mask / color image taken from # http://jirkavinse.deviantart.com/art/quot-Real-Life-quot-Alice-282261010 alice_coloring = np.array(Image.open(path.join(d, Add ("said") # You can use the mask parameter to set the word cloud shape wc = WordCloud(background_color="white", max_words=2000, mask=alice_coloring, stopwords=stopwords, max_font_size=40, random_state=42) # generate word cloud wc.generate(text) # create coloring from image image_colors = The ImageColorGenerator(alice_coloring) # show # Will have a word cloud with the shape of the image plt.imshow(wc, coloring) # show # interpolation="bilinear") plt.axis("off") plt.figure() # recolor wordcloud and show # we could also give Color_func =image_colors directly in the constructor # This way the word cloud will generate a font color strategy based on the given image color layout plt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear") plt.axis("off") plt.figure() plt.imshow(alice_coloring, cmap=plt.cm.gray, interpolation="bilinear") plt.axis("off") plt.show()Copy the code

The display effect is as follows: