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.

200_success
146k22 gold badges190 silver badges479 bronze badges
asked Nov 18, 2017 at 18:12
\$\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\$ Commented Nov 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\$ Commented Nov 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.

answered Nov 18, 2017 at 21:58
\$\endgroup\$

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.