2015-02-28 15 views
8

Sto usando word cloud con alcuni file txt. Come cambio this example se volevo 1) aumentare la risoluzione e 2) rimuovere il bordo vuoto.Aumentare la risoluzione con word-cloud e rimuovere il bordo vuoto

#!/usr/bin/env python2 
""" 
Minimal Example 
=============== 
Generating a square wordcloud from the US constitution using default arguments. 
""" 

from os import path 
import matplotlib.pyplot as plt 
from wordcloud import WordCloud 

d = path.dirname(__file__) 

# Read the whole text. 
text = open(path.join(d, 'constitution.txt')).read() 
wordcloud = WordCloud().generate(text) 
# Open a plot of the generated image. 
plt.imshow(wordcloud) 
plt.axis("off") 
plt.show() 

risposta

18

Non è possibile aumentare la risoluzione dell'immagine in plt.show() dato che questo è determinato dal vostro schermo, ma è possibile aumentare le dimensioni. Ciò consente di ridimensionare, ingrandire, ecc. Senza sfocature. Per fare ciò, passa le dimensioni a WordCloud, ad es.

wordcloud = WordCloud(width=800, height=400).generate(text) 

Tuttavia, questo solo determina la dimensione dell'immagine creata da WordCloud. Quando lo visualizzi utilizzando matplotlib, viene ridimensionato in base alle dimensioni dell'area di disegno, che è (per impostazione predefinita) intorno a 800x600 e perdi di nuovo la qualità. Per risolvere questo problema, devi specificare la dimensione della figura prima di chiamare imshow, ad es.

plt.figure(figsize=(20,10)) 
plt.imshow(wordcloud) 

Così facendo posso creare con successo un word cloud ad alta risoluzione 2000x1000.

Per la seconda domanda (rimozione del bordo), per prima cosa, è possibile impostare il bordo in nero, quindi è meno evidente, ad es.

plt.figure(figsize=(20,10), facecolor='k') 

È inoltre possibile ridurre le dimensioni del bordo utilizzando tight_layout, ad esempio

plt.tight_layout(pad=0) 

Il codice finale:

# Read the whole text. 
text = open(path.join(d, 'constitution.txt')).read() 
wordcloud = WordCloud(width=1600, height=800).generate(text) 
# Open a plot of the generated image. 

plt.figure(figsize=(20,10), facecolor='k') 
plt.imshow(wordcloud) 
plt.axis("off") 
plt.tight_layout(pad=0) 
plt.show() 

Sostituendo le ultime due righe con la seguente è possibile ottenere il risultato finale illustrato di seguito:

plt.savefig('wordcloud.png', facecolor='k', bbox_inches='tight') 

final Constitution wordcloud

-2

wordclouds Blurry - Ho litigato con questo. Per il mio uso, ho trovato che un differenziale troppo grande tra le occorrenze di parole più frequenti e quelle con poche occorrenze ha lasciato illeggibili le parole conteggio inferiore. Quando ridimensionavo i conteggi più frequenti per ridurre il differenziale, tutte le parole a bassa frequenza erano molto più leggibili.