У меня есть следующий словарь:
a = {'❤': 10, '????????????????': 23, '????': 13, '????????': 10, '????': 13}
Я хочу изобразить смайлики в виде полосы и нарисовать их на полосе. Сначала мне понравилось здесь (с annotate
), но это выглядит плохо и не поддерживает некоторые смайлики.
import matplotlib.pyplot as plt
ax = plt.subplot(111)
ax.bar(range(1,6), a.values())
for label, x, y in zip(a.keys(), range(1,6), a.values()):
plt.annotate(
label,
xy=(x, y), xytext=(10,10),
textcoords='offset points', ha='right', va='bottom',
bbox=dict(boxstyle='round,pad=0.5', alpha=0),
fontname='Segoe UI Emoji',
fontsize=20)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.set_xticks([])
plt.show()
Как я уже сказал, выглядит плохо:
Как я могу нарисовать смайлики так, чтобы они хорошо смотрелись с matplotlib?
Лучшим вариантом было бы использование другого шрифта в matplotlib, который будет поддерживать эти смайлики (я безуспешно пытался использовать некоторые другие значения для plt.rcParams['font.family']
), но если его не существует, изображения тоже будут работать (но как?)
Я не хочу начинать парсить изображения и маркировать их (потому что я почти уверен, что кто-то уже это сделал).
Я использую python 3, Spyder IDE, matplotlib версии 2.0.2 с anaconda.
Какие-либо предложения?