Reputation: 23
How can I get the following nested dictionary into a line graph using matplotlib?
Ideally on the x axis I have each poet's name and 4 lines on the graph, each for every key (average sentence length, number of sentences, longest, shortest).
poemsD = {'Maya Angelou': {'Average Sentence Lenght': 16.68,
'Number of sentences': 40,
'Longest': 45,
'Shortest': 2},
'Amanda Gorman': {'Average Sentence Lenght': 14.49,
'Number of sentences': 49,
'Longest': 38,
'Shortest': 3},
'Elizabeth Alexander': {'Average Sentence Lenght': 14.57,
'Number of sentences': 23,
'Longest': 40,
'Shortest': 1},
'Miller Williams': {'Average Sentence Lenght': 12.83,
'Number of sentences': 24,
'Longest': 39,
'Shortest': 2},
'Richard Blanco': {'Average Sentence Lenght': 34.53,
'Number of sentences': 17,
'Longest': 63,
'Shortest': 1},
'Robert Frost': {'Average Sentence Lenght': 30.25,
'Number of sentences': 4,
'Longest': 37,
'Shortest': 25}}
Upvotes: 1
Views: 390
Reputation: 5479
You can to it by creating a Pandas dataframe and plotting it:
import pandas as pd
import matplotlib.pyplot as plt
poemsD = {'Maya Angelou': {'Average Sentence Lenght': 16.68, 'Number of sentences': 40, 'Longest': 45, 'Shortest': 2},
'Amanda Gorman': {'Average Sentence Lenght': 14.49, 'Number of sentences': 49, 'Longest': 38, 'Shortest': 3},
'Elizabeth Alexander': {'Average Sentence Lenght': 14.57, 'Number of sentences': 23, 'Longest': 40, 'Shortest': 1},
'Miller Williams': {'Average Sentence Lenght': 12.83, 'Number of sentences': 24, 'Longest': 39, 'Shortest': 2},
'Richard Blanco': {'Average Sentence Lenght': 34.53, 'Number of sentences': 17, 'Longest': 63, 'Shortest': 1},
'Robert Frost': {'Average Sentence Lenght': 30.25, 'Number of sentences': 4, 'Longest': 37, 'Shortest': 25}}
df = pd.DataFrame(poemsD)
df2 = df.transpose()
df2.plot(figsize = (10,8))
plt.show()
A better visualization would be a bar graph. This is very easy to do by changing one line of the code:
df2.plot(figsize = (10,8), kind = 'bar')
Upvotes: 2