0

在此处输入图像描述 我有一个元组列表。在每个元组中都有一个单词(波斯语)和一个显示其频率的数字。当我运行代码进行绘图时,水平轴上的单词似乎从左到右对齐,这是错误的顺序!我做了一些搜索,发现我需要使用“arabic_reshaper”。我可以成功地重塑和对齐标签中的单词,但是,我找不到对 x 轴执行相同操作的方法。

列表中的第三个单词 (('کلمات', 1046)) 与 x 轴的标签相同,只是倒置了!有什么快速解决方法吗?

from bidi.algorithm import get_display
import matplotlib.pyplot as plt
import arabic_reshaper

data = [('اندر', 1609), ('جان', 1296), ('کلمات', 1046), ('دل', 896)]


x = [x[0] for x in data]
y = [x[1] for x in data]


xlbl = get_display( arabic_reshaper.reshape('کلمات'))
ylbl = get_display( arabic_reshaper.reshape('فراوانی'))
plt.bar(x, y, label='Bar1', color='blue')
plt.xlabel(xlbl, fontdict=None, labelpad=None)
plt.ylabel(ylbl, fontdict=None, labelpad=None)
plt.show()
4

1 回答 1

0

经过几个小时的搜索,我终于得到了答案!

这是新代码:

from bidi.algorithm import get_display
import matplotlib.pyplot as plt
import arabic_reshaper
from arabic_reshaper import reshape

data = [('اندر', 1609), ('جان', 1296), ('کلمات', 1046), ('دل', 896)]


x = [get_display(reshape(x[0])) for x in data] #pesky fix!
y = [x[1] for x in data]


print(x)
xlbl = get_display( arabic_reshaper.reshape('کلمات'))
ylbl = get_display( arabic_reshaper.reshape('فراوانی'))
plt.bar(x, y, label='Bar1', color='blue')
plt.xlabel(xlbl, fontdict=None, labelpad=None)
plt.ylabel(ylbl, fontdict=None, labelpad=None)
plt.savefig('pie.png', dpi=200)
plt.show()

在此处输入图像描述

于 2020-07-04T13:10:09.997 回答