Matplotlibs Xticks中的表情符号

时间:2018-08-23 15:50:45

标签: python matplotlib fonts

我想使用一种可以显示所有所需表情符号的字体。我有一个看起来像这样的数据框:

   chars   num
0         295
1      ☺   365
2         401
3      ♥   426
4         461
5         488
6         499
7         644
8         691
9      ❤   950
10       1328

我想绘制表情符号的数量,而表情符号在xticks中。我想在这里使用此字体:Twemoji Color,我已经安装了。我设法使其与标题x_label,y_label一起使用,但没有与this solution一起使用的x_ticks。

Tge下面的代码生成此图像: enter image description here

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)来使表情符号向右旋转,但不能正确设置字体。

这是输出:

2 个答案:

答案 0 :(得分:1)

在您链接的Twemoji Color页面上说,“目前只有FireFox支持SVGinOT颜色emoji”。

使用另一个渲染为html的绘图库并使用FireFox进行查看可能会更好。

答案 1 :(得分:1)

设置标题时,您正在使用fontproperties=prop将字体属性设置为要使用的字体。

但是,当您设置xticklabels时,您未指定字体。

尝试执行以下操作:

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