Creando Word Cloud en Python – ¿Haciendo que las palabras tengan diferentes tamaños?

Estoy tratando de crear una nube de palabras en python usando pytagcloud . Con mi nube actual, puedo generar una nube, pero todas las palabras son del mismo tamaño. ¿Cómo puedo alterar el código para que aparezcan los tamaños de mis palabras en relación con su frecuencia?

Mi archivo de texto ya tiene las palabras con sus respectivos conteos de frecuencia, el formato es como “George, 44” nueva línea “Harold, 77”, nueva línea, “Andrew, 22”, nueva línea, etc. Sin embargo, cuando se muestra el palabra, también muestra la frecuencia con ella.

with open ("MyText.txt", "r") as file: Data =file.read().replace('\n', '') tags = make_tags(get_tag_counts(Data), maxsize=150) create_tag_image(tags, 'Sample.png', size=(1200, 1200),background=(0, 0, 0, 255), fontname='Lobstero', rectangular=True) import webbrowser webbrowser.open('Sample.png') 

Necesitas convertir el resultado en una tupla. Usando su pregunta como texto de entrada obtenemos el resultado esperado:

 from pytagcloud import create_tag_image, make_tags from pytagcloud.lang.counter import get_tag_counts TEXT = '''I am trying to create a word cloud in python. With my current cloud, I can generate a cloud, but the words all are the same size. How can I alter the code so that my words' sizes appear in relation to their frequency?''' counts = get_tag_counts(TEXT) tags = make_tags(counts, maxsize=120) create_tag_image(tags, 'cloud_large.png', size=(900, 600), fontname='Lobster') 

introduzca la descripción de la imagen aquí

Vale la pena mirar las counts variables:

 [('cloud', 3), ('words', 2), ('code', 1), ('word', 1), ('appear', 1), ... 

que es simplemente una lista de tuplas. Ya que su archivo de texto de entrada contiene una lista de tuplas, simplemente necesita pasar esa información a make_tags .

Editar: puedes leer un archivo como este

 counts = [] with open("tag_file.txt") as FIN: for line in FIN: # Assume lines look like: word, number word,n = line.strip().split() word = word.replace(',','') counts.append([word,int(n)])