Python Matplotlib.pyplot标签不在标签中显示印地语文本,

Python Matplotlib.pyplot标签不在标签中显示印地语文本,,python,matplotlib,plot,Python,Matplotlib,Plot,我有一个函数,看起来有点像这样,它显示了一个分布图,其中有印地语的y轴标签 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):

我有一个函数,看起来有点像这样,它显示了一个分布图,其中有印地语的y轴标签

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()
现在,当我尝试用印地语文本调用函数时。然后我得到一个类似这样的输出

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


正如你所看到的,y形记号中的印地语单词不会显示出来。我做错什么了吗?有办法解决这个问题吗?

显然matplotlib不知道如何渲染字符。解决这个问题的一种方法是告诉matplotlib使用哪种字体。例如,假设您将使用“Nirmala”。将字体文件放在适当的位置,可以编写如下代码:

注意:我不确定您的
tok.wordtokenize(text)
是如何工作的(类似于
nltk
word\u tokenize(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)

我在一个软件包中使用此功能,相对文件地址有效吗?软件包中说“或者,可以使用.ttf文件的绝对路径,使用fname-kwarg指定字体”。我会说试试看。