【问题标题】:Emojis in matplotlibs xticksmatplotlibs xticks 中的表情符号
【发布时间】:2023-04-02 06:35:01
【问题描述】:

我想使用一种可以显示所有需要的表情符号的字体。我有一个如下所示的数据框:

   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 以下代码生成此图像:

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) 让表情符号向右旋转,但不知道如何正确设置字体。

这是输出:

【问题讨论】:

  • 你能把它设为minimal reproducible example吗? (即包括如何制作数据框,以便有人可以复制您的代码并运行它)。此外,您还没有展示如何将 matplotlib 中的字体设置为您选择的字体。你能把你设置字体的代码行包括进去吗?
  • 完全忘记了,现在添加了@tom

标签: python matplotlib fonts


【解决方案1】:

它在您链接的 Twemoji 颜色页面上显示“目前只有 FireFox 支持 SVGinOT 颜色表情符号”。

您最好使用另一个渲染为 html 的绘图库并使用 FireFox 来查看它。

【讨论】:

    【解决方案2】:

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

    但是,当您设置 xticklabels 时,您并没有指定字体。

    尝试执行以下操作:

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

    【讨论】:

      猜你喜欢
      • 2014-03-27
      • 2011-07-04
      • 2019-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 2021-10-11
      相关资源
      最近更新 更多