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)
如上图所示,我希望对这些字符进行编译,就像字典中提到的那样。
arabic_reshaper
正如bidi
@Sheldore 所指出的,这似乎运行良好。
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