6
\$\begingroup\$

I have the following dictionary:

top = {'aaaa': {'☹': 7, 'πŸ‘Ή': 12, '😑': 6}, 'bbbb': {'πŸ‘': 2, 'πŸ˜‰': 2, '😘': 2}, 'cccc': {'☹': 5, 'πŸ˜†': 3, 'πŸ™‚': 3}, 'dddd': {'🌝': 8, '😈': 7, 'πŸ€—': 3}, 'eeee': {'☺': 3, 'πŸ˜‚': 5, 'πŸ˜”': 4}, 'ffff': {'☹': 5, 'πŸ’ž': 5, '😒': 5}} 

Each 'aaaa' or 'bbbb' is the user's name, and his values is the emoji he is using the most. I want to plot a decent looking graph to visualize. After a few tries, this is my best work:

enter image description here

with the code:

import matplotlib.pyplot as plt def top_emoji(top): fig, ax = plt.subplots(figsize=(8, 5)) y = 9 level = 0 start = 9 for name, dictionary in top.items(): ax.text(start, y - level, name, fontsize=20) x = 3 for emoj in dictionary.keys(): ax.text(start - x, y - level, emoj, fontname='Segoe UI Emoji', fontsize=20) x += 1 level += 1 ax.axis([0, 10, 0, 10]) ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) ax.axis('off') plt.show() 

Which is terrible in my opinion. Any recommendations for improvements will be much appreciated.

\$\endgroup\$
2
  • \$\begingroup\$Just to be clear… the scores are irrelevant? And it's OK to present each user's emojis in any order?\$\endgroup\$CommentedNov 18, 2017 at 18:44
  • \$\begingroup\$Well I rather put the highest score first, closest to the person's name, but right now it doesn't really bother me.\$\endgroup\$
    – sheldonzy
    CommentedNov 18, 2017 at 18:45

1 Answer 1

2
\$\begingroup\$

Your code might be a bit clearer without level & start, preferring to manipulate just x & y.

You might write a sorting helper function, and change the emoj loop to this:

 for x, emoj in enumerate(emoj_by_score(dictionary)): 

You have some hard coded values that you could derive by inspecting the top input argument. On the whole, it doesn't seem so terrible. It is reasonably clear.

\$\endgroup\$

    Start asking to get answers

    Find the answer to your question by asking.

    Ask question

    Explore related questions

    See similar questions with these tags.