用阿拉伯字符绘制直方图

时间:2019-05-24 12:36:26

标签: python matplotlib character-encoding seaborn arabic

我正在尝试绘制用arabic编写的最常见单词的直方图,但我找不到解决方法。我所能得到的只是切片的字符,而不是编译的单词。

这是我得到的例子:

enter image description here

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)

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

1 个答案:

答案 0 :(得分:1)

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

import seaborn as sns
import pandas as pd
import arabic_reshaper
from bidi.algorithm import get_display

res = {
 'الذكاء': 8,
 'الاصطناعي': 9,
 'هو': 2,
 'سلوك': 1,
 'وخصائص': 1,
 'معينة': 1,
 'تتسم': 1
}

res2 = {get_display(arabic_reshaper.reshape(k)): v for k,v in res.items()}

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

sns.set(style="whitegrid")
ax = sns.barplot(x="count", y="word", data=df)

barplot with arabic labels