Я хотел бы использовать шрифт, который может отображать все необходимые эмоции. У меня есть dataframe, который выглядит так:
chars num
0 295
1 365
2 401
3 426
4 461
5 488
6 499
7 644
8 691
9 950
10 1328
Я хочу нарисовать количество эмозисов, в то время как emojis - в xticks. Я хотел использовать этот шрифт здесь: Twemoji Color, который я уже установил. Мне удалось заставить его работать с заголовком, x_label, y_label, но не с x_ticks с этим решением.
Следующий код приводит к этому изображению:
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
from matplotlib import ft2font
from matplotlib.font_manager import ttfFontProperty
import pandas as pd
fpath = '/usr/share/fonts/Twitter Color Emoji/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=fontsize,
stretch=ttfFontProp.stretch,
style=ttfFontProp.style,
variant=ttfFontProp.variant,
weight=ttfFontProp.weight)
emojis = ['', '', '', '', '', '', '', '', '', '', '']
nums = [295, 365, 401, 426, 461, 488, 499, 644, 691, 950, 1328]
df = pd.DataFrame({'chars': emojis, 'num': nums})
axis = df.plot.bar()
axis.set_title(' '.join(emojis), fontproperties=prop)
axis.set_xticklabels(df.chars.tolist(), rotation=0, fontsize=5)
plot.show()
В настоящее время я делаю следующее:
import matplotlib.pyplot as plt
import pandas as pd
emojis = ['', '', '', '', '', '', '', '', '', '', '']
nums = [295, 365, 401, 426, 461, 488, 499, 644, 691, 950, 1328]
df = pd.DataFrame({'chars': emojis, 'num': nums})
axis = x.plot.bar()
plt.show()
Теперь я знаю, что могу использовать axis.set_xticklabels(df.chars.tolist(), rotation=0)
чтобы получить emojis, повернутый вправо, но не как правильно установить шрифт.
И это результат:
Когда вы устанавливаете заголовок, вы устанавливаете свойства шрифта шрифту, который хотите использовать, используя fontproperties=prop
.
Но когда вы устанавливаете xticklabels, вы не указываете шрифт.
Попробуйте сделать следующее:
axis.set_xticklabels(df.chars.tolist(), rotation=0, fontsize=5, fontproperties=prop)
Он говорит на странице цвета Twemoji, что вы связали это: "Только FireFox поддерживает SVGinOT цвет emoji на данный момент".
Возможно, вам лучше использовать другую графическую библиотеку, которая отображает html, и использовать FireFox для ее просмотра.