Emojis в matplotlibs xticks

1

Я хотел бы использовать шрифт, который может отображать все необходимые эмоции. У меня есть 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 с этим решением.

Следующий код приводит к этому изображению: Изображение 174551

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, повернутый вправо, но не как правильно установить шрифт.

И это результат: Изображение 174551

  • 0
    Можете ли вы сделать это минимальным воспроизводимым примером ? (например, укажите, как создать фрейм данных, чтобы кто-то мог скопировать ваш код и запустить его). Кроме того, вы не показали, как установить шрифт в matplotlib для выбранного вами шрифта. Не могли бы вы включить строку кода, где вы устанавливаете шрифт?
  • 0
    Полностью забыл об этом, добавил его сейчас @tom
Теги:
matplotlib
fonts

2 ответа

1

Когда вы устанавливаете заголовок, вы устанавливаете свойства шрифта шрифту, который хотите использовать, используя fontproperties=prop.

Но когда вы устанавливаете xticklabels, вы не указываете шрифт.

Попробуйте сделать следующее:

axis.set_xticklabels(df.chars.tolist(), rotation=0, fontsize=5, fontproperties=prop)
1

Он говорит на странице цвета Twemoji, что вы связали это: "Только FireFox поддерживает SVGinOT цвет emoji на данный момент".

Возможно, вам лучше использовать другую графическую библиотеку, которая отображает html, и использовать FireFox для ее просмотра.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню