用阿拉伯字符绘制直方图

sau*_*aul 6 python matplotlib arabic character-encoding seaborn

我正在尝试绘制用arabic. 我所能得到的只是切片字符,而不是编译后的单词。

这是我得到的一个例子:

在此处输入图片说明

import seaborn as sns

import pandas as pd

res = {
 '??????': 8,
 '?????????': 9,
 '??': 2,
 '????': 1,
 '??????': 1,
 '?????': 1,
 '????': 1
}

df = pd.DataFrame(res.items(), columns=['word', 'count'])

sns.set(style="whitegrid")
ax = sns.barplot(x="count", y="word", data=df)
Run Code Online (Sandbox Code Playgroud)

如上图所示,我希望对这些字符进行编译,就像字典中提到的那样。

moz*_*way 4

arabic_reshaper正如bidi@Sheldore 所指出的,这似乎运行良好。

\n
import seaborn as sns\nimport pandas as pd\nimport arabic_reshaper\nfrom bidi.algorithm import get_display\n\nres = {\n \'\xd8\xa7\xd9\x84\xd8\xb0\xd9\x83\xd8\xa7\xd8\xa1\': 8,\n \'\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb5\xd8\xb7\xd9\x86\xd8\xa7\xd8\xb9\xd9\x8a\': 9,\n \'\xd9\x87\xd9\x88\': 2,\n \'\xd8\xb3\xd9\x84\xd9\x88\xd9\x83\': 1,\n \'\xd9\x88\xd8\xae\xd8\xb5\xd8\xa7\xd8\xa6\xd8\xb5\': 1,\n \'\xd9\x85\xd8\xb9\xd9\x8a\xd9\x86\xd8\xa9\': 1,\n \'\xd8\xaa\xd8\xaa\xd8\xb3\xd9\x85\': 1\n}\n\nres2 = {get_display(arabic_reshaper.reshape(k)): v for k,v in res.items()}\n\ndf = pd.DataFrame(res2.items(), columns=[\'word\', \'count\'])\n\nsns.set(style="whitegrid")\nax = sns.barplot(x="count", y="word", data=df)\n
Run Code Online (Sandbox Code Playgroud)\n

带有阿拉伯标签的条形图

\n

  • 不要忘记使用“pip install arabic-reshaper python-bidi”安装软件包 (2认同)