Я пытаюсь отобразить частоты использования эмодзи в различных типах твитов («нормальных» твитах, ретвитах и ответах).Для этой цели я использую шрифт TwitterColorEmoji-SVGinOT ( link ), чтобы визуализировать Юникод эмодзи, который я поместил в качестве меток xticks с plt.xticks () .Тем не менее, он правильно устанавливает символы только для последнего подзаговора (см. Рисунок ниже).
Как я могу сделать то же самое для всех подзаговоров?
Это код, который яиспользуется для создания участков.
import matplotlib.font_manager as fm
from matplotlib import ft2font
from matplotlib.font_manager import ttfFontProperty
def print_emoji_freq(emoji_freqs, ax, fontprop):
emojis = list(zip(*emoji_freqs))[0]
scores = list(zip(*emoji_freqs))[1]
x_pos = np.arange(len(emojis))
ax.bar(x_pos, scores, align='center')
plt.xticks(x_pos, emojis, fontproperties=fontprop)
ax.set_xticks(x_pos)
ax.set_ylabel('Popularity Score')
fpath = '/home/mattia/.local/share/fonts/TwitterColorEmoji-SVGinOT.ttf'
fprop = fm.FontProperties(fname=fpath)
font = ft2font.FT2Font(fpath)
fprop = fm.FontProperties(fname=fpath)
ttfFontProp = ttfFontProperty(font)
fontprop = fm.FontProperties(family='sans-serif',
fname=ttfFontProp.fname,
size=25,
stretch=ttfFontProp.stretch,
style=ttfFontProp.style,
variant=ttfFontProp.variant,
weight=ttfFontProp.weight)
fig, ax = plt.subplots(1, 3, figsize=(18,4))
print_emoji_freq(st_emojis, ax[0], fontprop)
print_emoji_freq(rt_emojis, ax[1], fontprop)
print_emoji_freq(rp_emojis, ax[2], fontprop)
plt.show()
Заранее спасибо.
Решение Спасибо@cheersmate, @ ImportanceOfBeingErnest за их полезное предложение.Действительно, используя функции ax.set_xticks () и ax.set_xticklabels () я могу получить желаемый результат.
Это обновленный метод:
def print_emoji_freq(emoji_freqs, ax, fontprop):
emojis = list(zip(*emoji_freqs))[0]
scores = list(zip(*emoji_freqs))[1]
x_pos = np.arange(len(emojis))
ax.bar(x_pos, scores, align='center')
ax.set_xticks(x_pos)
ax.set_xticklabels(emojis, fontproperties=fontprop)
ax.set_xticks(x_pos)
ax.set_ylabel('Popularity Score')
и это конечный результат