matplotlib:使用表情符号标注注释

时间:2017-04-14 21:38:42

标签: python-3.x matplotlib

我在macOS中使用Python 3.4。 Matplotlib应该支持标签中的Unicode,但我没有看到Emojis正确呈现。

import matplotlib.pyplot as plt
# some code to generate `data` and `labels`...
plt.clf()
plt.scatter(data[:, 0], data[:, 1], c=col)
# disclaimer: labeling taken from example http://stackoverflow.com/questions/5147112/matplotlib-how-to-put-individual-tags-for-a-scatter-plot
for label, x, y in zip(labels, data[:, 0], data[:, 1]):
    plt.annotate(
        label, # some of these contain Emojis
        xy=(x, y), xytext=(-20, 20),
        textcoords='offset points', ha='right', va='bottom',
        bbox=dict(boxstyle='round,pad=0.5', fc='yellow', alpha=0.5),
        arrowprops=dict(arrowstyle = '->', connectionstyle='arc3,rad=0'))
plt.show(False)

result

一些旧的前Unicode Emojis以旧式出现,但其余的(在这个例子中,“火”,“音乐”和其他)则没有。是否有一个技巧可以使它们正确显示?

1 个答案:

答案 0 :(得分:3)

这里的问题是默认字体对emojis没有很好的支持。

<div class="field"> <%= f.label 'Client' %> <%= f.select :client_id, Client.all.collect { |c| [ c.companyName, c.id ] } %> 函数中,您可以添加参数plt.annotate以指定对emojis有良好支持的字体。

以下代码是我在Windows机器上对代码进行一些编辑后得到的代码,似乎已经在我的计算机上安装了“Segoe UI Emoji”。

fontname

这是我得到的,表情符号可能不会显示清楚,这取决于你的字体: enter image description here