2017-06-13 13 views
1

私はこのように見える関数を持っており、ヒンディー語でy軸のラベルを持つ分布図を表示しています。Matplotlib.pyplotラベルでラベルにヒンディー語のテキストが表示されない

def dispersionPlot(text, words): 
    tokens = tok.wordtokenize(text) 
    print(words) 
    x_length = len(tokens) 
    y_length = len(words) 
    x_list = [] 
    y_list = [] 
    for i in range(0 , x_length): 
     for j in range(0 , y_length): 
      if tokens[i] == words[j]: 
       x_list.append(i+1) 
       y_list.append(j) 
    plt.plot(x_list, y_list, "b|", scalex=.1) 
    plt.yticks(list(range(len(words))), words, color="b") 
    plt.ylim(-1, len(words)) 
    plt.xlabel("Lexical Distribution") 
    plt.show() 

ここで、ヒンディー語のテキストで関数を呼び出そうとします。それから、私はこれにいくらかの出力を得ます。

Output

あなたがyティックでヒンディー語の単語を見ることができるように

text = "प्रदूषण आज के समय का सबसे बड़ा अभिशाप है जो हमारे विज्ञानं की देन है। प्रदूषण के बढ़ने से हमारे धरती पे बहुत सी समस्याएं पैदा हो गई जिसे अगर समय रहते न रोक गया तो वो दिन दूर नही जब धीरे-धीरे सब खतम हो जायेगा। प्रदुषण के तत्त्व मनुष्यों द्वारा उत्पन्न किया गया पदार्थ या वेस्ट मटेरियल होता है जो की प्राकृतिक संसाधन जैसे की वायु, जल और भूमि आदि को प्रदूषित करते है| प्रदूषण जहरीली गैस, कीटनाशक, शाकनाशी, कवकनाशी, ध्वनि, कार्बनिक मिश्रण, रेडियोधर्मी पदार्थ हो सकते है। दिन पर दिन वनो की कटाई, कारखानो का प्रदूषित धुआं, वाहनो का धुँआ हमारे पूरे वातावरण को दूषित करता जा रहा है। प्रदूषण कई तरह के होते है परन्तु इनमे से सबसे हानिकारक जल प्रदूषण, वायु प्रदूषण, और ध्वनि प्रदूषण है। नगरो का सारा कूड़ा करकट और मल जल में डाल दिया जाता है जिससे हमारे पीने का पानी अशुद्ध हो गया है और इसके सेवन से हमारे शरीर को अनेक तरह की बीमारियां लग रही है। वायु प्रदूषण हमारे द्वारा उत्पन की गई गसो से पूरी हवा में फ़ैल जाता है और वही दूषित हवा को हम श्वास के साथ अंदर लेते है और कई तरह की बिमारियों का शिकार बन जाते है। ध्वनि प्रदूषण का कारण बढ़ती जनसख्या है जिसके कारण शोरगुल बढ़ता जा रहा है जैसे की वाहनो का शोर, कारखानो में मशीनो का शोर इत्यादि । प्रदूषण पर नियंत्रण पाने के लिए संयुक्त प्रयास की आवश्यकता है जिससे की हम एक स्वस्थ्य और प्रदुषण मुक्त वातावरण पा सके।" 
words = ["है", "प्रदूषण"] 
dispersionPlot(text, words) 

は表示されません。私は何か間違っているのですか?これを修正する方法はありますか?

答えて

1

明らかに、matplotlibは文字をどのようにレンダリングするか分かりません。これを解決する1つの方法は、matplotlibにどのフォントを使うかを伝えることです。たとえば、 "Nirmala"を使用するとします。適切な場所にフォントファイルを入れて、あなたは次のようにコーディングすることができます。

注:私は(?nltk年代word_tokenize(s)と同様に)どのようにあなたのtok.wordtokenize(text)作品はよく分かりません。そこで私はその行をtokens = text.split()に変更しました。あなたが気にしないことを願っています。

from matplotlib import pyplot as plt 
from matplotlib.font_manager import FontProperties 

def dispersionPlot(text, words): 
    tokens = text.split() 
    print(words) 
    x_length = len(tokens) 
    y_length = len(words) 
    x_list = [] 
    y_list = [] 
    for i in range(0 , x_length): 
     for j in range(0 , y_length): 
      if tokens[i] == words[j]: 
       x_list.append(i+1) 
       y_list.append(j) 
    plt.plot(x_list, y_list, "b|", scalex=.1) 
    hindi_font = FontProperties(fname = 'Nirmala.ttf') 
    plt.yticks(list(range(len(words))), words, color="b", fontproperties=hindi_font) 
    plt.ylim(-1, len(words)) 
    plt.xlabel("Lexical Distribution") 
    plt.show() 

text = "प्रदूषण आज के समय का सबसे बड़ा अभिशाप है जो हमारे विज्ञानं की देन है। प्रदूषण के बढ़ने से हमारे धरती पे बहुत सी समस्याएं पैदा हो गई जिसे अगर समय रहते न रोक गया तो वो दिन दूर नही जब धीरे-धीरे सब खतम हो जायेगा। प्रदुषण के तत्त्व मनुष्यों द्वारा उत्पन्न किया गया पदार्थ या वेस्ट मटेरियल होता है जो की प्राकृतिक संसाधन जैसे की वायु, जल और भूमि आदि को प्रदूषित करते है| प्रदूषण जहरीली गैस, कीटनाशक, शाकनाशी, कवकनाशी, ध्वनि, कार्बनिक मिश्रण, रेडियोधर्मी पदार्थ हो सकते है। दिन पर दिन वनो की कटाई, कारखानो का प्रदूषित धुआं, वाहनो का धुँआ हमारे पूरे वातावरण को दूषित करता जा रहा है। प्रदूषण कई तरह के होते है परन्तु इनमे से सबसे हानिकारक जल प्रदूषण, वायु प्रदूषण, और ध्वनि प्रदूषण है। नगरो का सारा कूड़ा करकट और मल जल में डाल दिया जाता है जिससे हमारे पीने का पानी अशुद्ध हो गया है और इसके सेवन से हमारे शरीर को अनेक तरह की बीमारियां लग रही है। वायु प्रदूषण हमारे द्वारा उत्पन की गई गसो से पूरी हवा में फ़ैल जाता है और वही दूषित हवा को हम श्वास के साथ अंदर लेते है और कई तरह की बिमारियों का शिकार बन जाते है। ध्वनि प्रदूषण का कारण बढ़ती जनसख्या है जिसके कारण शोरगुल बढ़ता जा रहा है जैसे की वाहनो का शोर, कारखानो में मशीनो का शोर इत्यादि । प्रदूषण पर नियंत्रण पाने के लिए संयुक्त प्रयास की आवश्यकता है जिससे की हम एक स्वस्थ्य और प्रदुषण मुक्त वातावरण पा सके।" 
words = ["है", "प्रदूषण"] 
dispersionPlot(text, words) 

enter image description here

+0

私はパッケージ意志、相対ファイルアドレスの仕事でこの関数を使用していますか? – Djokester

+1

[document](https://matplotlib.org/api/font_manager_api.html?highlight=fontproperties#matplotlib.font_manager.FontProperties)は、 "あるいは、フォントは.ttfファイルへの絶対パスを使用して、 fname kwargを使用します。私は試してみると言うだろう。 –

関連する問題