La bibliothèque python wordcloud
donne la possibilité de créer des nuages de mots avec l'APi de Matplotlib. La documentation associée a le mérite d'exister mais est très succinte.
On commence par importer la classe Wordcloud
et initialiser un objet. C'est l'occasion de définir ses propriétés graphiques.
from wordcloud import WordCloud
cloud_generator = WordCloud(background_color='white',
random_state=1)
La méthode utilisée pour la génération dépend du type de données que l'on a :
- Avec du texte simple, on utilisera
.generate(text)
` - Si l'on dispose d'un dictionnaire
{mot:fréquence}
, on peut utiliser.generate_from_frequencies(text)
- Si l'on dispose d'un dataframe avec une colonne correspondant aux poids des mots et les mots en index, on utilisera
.fit_words(df_weights)
. On ordonnera les lignes du dataframe si l'on veut que seuls les mots les plus "lourds" apparaissent dans le nuage.
Exemple simple :
cloud_generator = WordCloud(background_color='white',
random_state=1)
wordcloud_image = cloud_generator.fit_words(df_ranked_words)
plt.imshow(wordcloud_image, interpolation="bilinear")
plt.show()
Les options graphique suivantes sont disponibles :
width = 500
- largeur du graphiqueheight = 200
- hauteur du graphiquebackground_color='salmon'
- couleur du fondcolormap = 'tab20b'
- couleur des mots1collocations=False
- Permet d'éviter que des doublons apparaissentstopwords = STOPWORDS
- retire les stopwords2
Exemple plus fourni issu de cet article :
from wordcloud import WordCloud
cloud_generator = WordCloud(random_state=1,
height=1000, width = 1000,
background_color='salmon',
colormap = 'Pastel2',
collocations=False)
wordcloud_image = cloud_generator.fit_words(df_ranked_words[0:50])
def plot_cloud(wordcloud):
# Set figure size
plt.figure(figsize=(7, 7))
# Display image
plt.imshow(wordcloud, interpolation='bilinear')
# No axis details
plt.axis("off");
plot_cloud(wordcloud_image)
Le résultat :
-
On importe avec
from matplotlib import cm
. Matplotlib colormaps ↩ -
Préciser au moment de l'importation :
from wordcloud import WordCloud, STOPWORDS
↩