gpt4 book ai didi

python-3.x - matplotlib:用表情符号标签注释图

转载 作者:行者123 更新时间:2023-12-04 13:23:53 26 4
gpt4 key购买 nike

我在 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 表情符号以它们的旧样式出现,但其余的(在本例中为“火”、“音乐”等)不会。有什么技巧可以使它们正确显示吗?

最佳答案

这里的问题是默认字体对表情符号没有很好的支持。

plt.annotate函数中,可以添加一个参数fontname来指定对emojis支持较好的字体。

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

# this line is for jupyter notebook
%matplotlib inline

import matplotlib.pyplot as plt
import numpy as np
# config the figure for bigger and higher resolution
plt.rcParams["figure.figsize"] = [12.0, 8.0]
plt.rcParams['figure.dpi'] = 300
data = np.random.randn(7, 2)
plt.scatter(data[:, 0], data[:, 1])
labels = '😀 😃 😄 😁 😆 😅 😂 🤣 ☺️ 😊 😇'.split()
print(labels)
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'),
fontname='Segoe UI Emoji', # this is the param added
fontsize=20)
plt.show()

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

关于python-3.x - matplotlib:用表情符号标签注释图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43419590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com