34

RTL (この場合はヘブライ語) であるプロットにテキストを追加しようとしています。いくつかの作業の後、なんとかテキストを表示するようになりましたが、LTR (つまり、逆順) で表示されます。私は参照を掘り下げ、オンラインで広範な検索を行いましたが、何も見つかりませんでした。

私が使用しているものの例:

import matplotlib.pyplot as plt
plt.text(0.5, 0.5, u'שלום כיתה א', name = 'Arial')
plt.show()

と表示されます。ヘブライ語が表示されない場合は、'Hello' と入力すると、'olleH' が出力されます。

LTR と RTL が混在しているため、単純に入力を逆にすることはできません。

あらゆる助けをいただければ幸いです。

4

6 に答える 6

30

同じ問題に遭遇した人は誰でも、部分的な解決策を見つけました。

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()

正しく表示します。

では、なぜ部分的なのでしょうか。私が matplotlib で使用している latex 式が、bidi パッケージによって時々台無しになることがわかったからです。慎重に使用してください。

于 2013-03-16T12:16:02.477 に答える
3

私は同じ問題を抱えていましたが、@Korem と @Nasser Al-Wohabi の両方の回答を次のように使用すると思います。

import arabic_reshaper
from bidi.algorithm import get_display

new_text=get_display(arabic_reshaper.reshape(old_text))

arabic_reshaper だけが文字を再配置せず、bidi だけがそれらを結合しなかったため

^_^

于 2019-11-28T17:51:12.900 に答える