1

I have to make a histogram, that shows the word length frequency from a poem. I've got the frequency, but I can't represent it in a histogram. This is my code:

full = "Ej mi a kő! tyúkanyó, kend A szobában lakik itt bent? Lám, csak jó az isten, jót ád, Hogy fölvitte a kend dolgát!  Itt szaladgál föl és alá, Még a ládára is fölszáll, Eszébe jut, kotkodákol, S nem verik ki a szobábol. Dehogy verik, dehogy verik! Mint a galambot etetik, Válogat a kendermagban, A kiskirály sem él jobban. Ezért aztán, tyúkanyó, hát Jól megbecsűlje kend magát, Iparkodjék, ne legyen ám Tojás szűkében az anyám. – Morzsa kutyánk, hegyezd füled, Hadd beszélek mostan veled, Régi cseléd vagy a háznál, Mindig emberűl szolgáltál, Ezután is jó légy, Morzsa, Kedvet ne kapj a tyúkhusra, Élj a tyúkkal barátságba’... Anyám egyetlen jószága."
vs = full.translate(string.punctuation)
vers =  vs.lower().split()
c=[len(i) for i in vers] # gives [3, 3, 5, 5, 3, 6, 4, 4, 3, 5]
counts=[0]*max(c)      # gives [0, 0, 0, 0, 0, 0]
for i in range(len(c)):
  counts[c[i]-1]+=1    # adds 1 to each index of c[i] (we subtract 1 because of 0-based indices)
print(counts)

plt.hist(counts, 14)

What did I do wrong? The X and Y axis are inverted, it shows the word length opposive. :( Thanks in advance.

Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
Erik Gebhard
  • 23
  • 1
  • 9

1 Answers1

0

This is what you are looking for. I referred to this - (Using Counter() in Python to build histogram?)

from collections import Counter
import numpy as np
import matplotlib.pyplot as plt

full = "Ej mi a kő! tyúkanyó, kend A szobában lakik itt bent? Lám, csak jó az isten, jót ád, Hogy fölvitte a kend dolgát!  Itt szaladgál föl és alá, Még a ládára is fölszáll, Eszébe jut, kotkodákol, S nem verik ki a szobábol. Dehogy verik, dehogy verik! Mint a galambot etetik, Válogat a kendermagban, A kiskirály sem él jobban. Ezért aztán, tyúkanyó, hát Jól megbecsűlje kend magát, Iparkodjék, ne legyen ám Tojás szűkében az anyám. – Morzsa kutyánk, hegyezd füled, Hadd beszélek mostan veled, Régi cseléd vagy a háznál, Mindig emberűl szolgáltál, Ezután is jó légy, Morzsa, Kedvet ne kapj a tyúkhusra, Élj a tyúkkal barátságba’... Anyám egyetlen jószága."
xxx=list(full)
labels, values = zip(*Counter(xxx).items())

indexes = np.arange(len(labels))
width = 1

plt.bar(indexes, values, width)
plt.xticks(indexes + width * 0.5, labels)
plt.show()
Abhisek Roy
  • 582
  • 12
  • 31