2015-02-28 17 views
8

Używam plików word cloud z niektórymi plikami txt. Jak zmienić this example, jeśli chcę 1) zwiększyć rozdzielczość i 2) usunąć pustą granicę.Zwiększ rozdzielczość za pomocą chmury słów i usuń pustą granicę

#!/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() 

Odpowiedz

18

Nie można zwiększyć rozdzielczość obrazu w plt.show() ponieważ zależy od ekranu, ale można zwiększyć rozmiar. Pozwala to na skalowanie, powiększanie itp. Bez rozmycia. Aby to zrobić, należy podać wymiary: WordCloud, np.

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

Jednak to właśnie określa rozmiar obrazu utworzonego przez WordCloud. Po wyświetleniu tego przy użyciu matplotlib jest on skalowany do rozmiaru płótna wydruku, który jest (domyślnie) około 800x600 i znowu traci jakość. Aby to naprawić, przed wywołaniem imshow należy określić rozmiar rysunku.

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

Dzięki temu mogę z powodzeniem utworzyć chmurę słów o wysokiej rozdzielczości 2000x1000.

Na drugie pytanie (usunięcie obramowania) najpierw możemy ustawić granicę na czarny, więc jest mniej widoczne, np.

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

Można także zmniejszyć rozmiar granicy za pomocą tight_layout np

plt.tight_layout(pad=0) 

Kod końcowy:

# 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() 

zastępując dwa ostatnie wiersze z następujących można uzyskać przedstawione ostateczne wyjście poniżej:

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

final Constitution wordcloud

-2

rozmyte wordclouds - Walczyłem z tym. Z mojego doświadczenia wynika, że ​​zbyt duża różnica pomiędzy najczęściej występującymi słowami i tymi z kilkoma wystąpieniami sprawiła, że ​​słowa o niższym numerze były nieczytelne. Kiedy skalowałem częstsze pomiary, aby zredukować różnicę, wszystkie słowa o niższej częstotliwości były znacznie bardziej czytelne.