Matplotlib: 从右到左书写文本(希伯来文,阿拉伯文等)
我正在尝试在我的图表中添加一些文本,这些文本是从右到左显示的(在这个例子中是希伯来语)。经过一番努力,我终于让文本显示出来了,但它却是从左到右显示的(也就是说,顺序是反的)。我查阅了参考资料,也在网上进行了广泛的搜索,但没有找到解决办法。
这是我使用的一个例子:
import matplotlib.pyplot as plt
plt.text(0.5, 0.5, u'שלום כיתה א', name = 'Arial')
plt.show()
结果显示为'א התיכ םלוש'。如果你看不懂希伯来语,可以想象成我输入了'Hello',但输出却是'olleH'。
我不能简单地反转输入,因为里面混合了从左到右和从右到左的文本。
任何帮助都将不胜感激。
4 个回答
6
你可以尝试通过以下方式来翻转文本:
import matplotlib.pyplot as plt
plt.text(0.5, 0.5, (u'שלום כיתה א')[::-1], name = 'Arial')
plt.show()
62
对于阿拉伯语,你需要同时使用bidi.algorithm.get_display
和arabic_reshaper
这两个模块:
from bidi.algorithm import get_display
import matplotlib.pyplot as plt
import arabic_reshaper
reshaped_text = arabic_reshaper.reshape(u'لغةٌ عربيّة')
artext = get_display(reshaped_text)
plt.text(0.25, 0.45, artext , name = 'Times New Roman',fontsize=50)
plt.show()
33
对于遇到同样问题的人,我找到了一部分解决办法。
bidi包提供了这个功能,所以使用:
from bidi import algorithm as bidialg
import matplotlib.pyplot as plt
text = bidialg.get_display(u'שלום כיתה א')
plt.text(0.5, 0.5, text , name = 'Arial')
plt.show()
可以正确显示。
那么为什么说这是部分解决呢?因为我发现bidi包有时候会搞乱我在matplotlib中使用的latex表达式。所以使用的时候要小心。