sou novo com o Python e estou tendo dificuldade com meu algorítimo, a função do mesmo é verificar palavras em um conjunto de arquivos no formato PDF e analisar a recorrência de cada palavra gerando com essas informações um gráfico da lei de zipf(a segunda palavra mais recorrente repete em quantidade a raiz quadrada da primeira palavra mais recorrente) em fim, estou usando a biblioteca matplotlib para plotar gráficos em barras, porém o número de palavras que aparecem no gráfico é muito grande(no eixo x) e estão se sobrescrevendo. obs: todo crítica é bem vinda, desde já agradeço a todos. segue o algorítimo e o gráfico gerado. #!/usr/bin/env python3.6 import os import re from operator import itemgetter import matplotlib.pyplot as plt import numpy as np import math from tkinter import * def io_pasta(): def on_press(): if not (os.path.exists(entrada.get())): lb["fg"]="red" lb["text"] = "Pasta inexistente/inacessivél" lb["font"]= "Bold" else: zipf(entrada.get(),janela) janela = Tk() lb=Label(janela, text = "Onde estão os asquivos?", font = "arial") lb.pack() entrada = Entry(janela, width = 40) entrada.place(x=40,y=40) b = Button(janela,text="OK",width = 10, command=on_press) b.place(x=150,y=75) janela.geometry("400x120") janela.title("Distribuição ZIPF") janela.mainloop() def zipf(pasta,win): win.destroy() if not pasta[-1]=="/": pasta+="/" palavra=[] repetic=[] for nome in os.listdir(pasta): os.system("pdftotext -enc UTF-8 "+pasta+""+str(nome)+" "+pasta+""+str(nome)+".txt") print("arquivos convertidos ......................ok!") os.system("mkdir "+pasta+"arquivos_originais && mv "+pasta+"*pdf "+pasta+"arquivos_originais") os.system("mkdir "+pasta+"convertidos_txt && mv "+pasta+"*txt "+pasta+"convertidos_txt/") os.system("mkdir "+pasta+"zipf") print("pasta ARQUIVOS_MOVIDOS criada .................ok!") print("Arquivos Movidos.............................ok!") frequency = {} for arq in os.listdir(""+pasta+"convertidos_txt/"): open_file = open(""+pasta+"convertidos_txt/"+str(arq)+"", "r", encoding='latin-1') file_to_string = open_file.read() w1 = re.findall(r'(\b[A-Za-z][a-z]{4,20}\b)', file_to_string) control = True for word in w1: count = frequency.get(word,0) frequency[word] = count + 1 for key, value in reversed(sorted(frequency.items(), key = itemgetter(1))): if control == True: j=value control=False else: if abs(math.sqrt(j)-value)<4: palavra.append(key) repetic.append(value) plt.title("Distribuição zipf") plt.grid(True) plt.xticks(repetic,palavra,rotation=90,size='small') pos = np.arange(len(palavra)) + .5 plt.bar(pos,repetic,align='center',color='#b8ff5c') plt.savefig(''+pasta+'zipf/grafico_'+str(arq)+'.png') io_pasta() Continue reading...