2011-03-23 16 views
5

मैं एक साजिश एक धुरी लेबल में कोई गैर-लैटिन चरित्र (एक "μ") के साथ matplotlib का उपयोग कर उत्पन्न करने के लिए कोशिश कर रहा हूँ का उपयोग कर लेबल, इस तरह:matplotlib यूनिकोड अक्ष काहिरा रेंडरर

matplotlib.pyplot.xlabel(u'Sarcomere Length (μm)') 

मैं मीटर "μ" के बजाय लिनक्स पर काहिरा रेंडरर का उपयोग कर और मैं एक "बॉक्स" हो रही है:

Incorrect Axis Label

यह ("é" की तरह) उच्चारण चिह्न लैटिन वर्णों के साथ काम करता है। कोई विचार?

उत्तर

7

यह एक फ़ॉन्ट समस्या है। जो भी फ़ॉन्ट आपने matplotlib के डिफ़ॉल्ट के रूप में सेट किया है उसमें विशिष्ट चरित्र नहीं है। संभावित रूप से इसे ठीक करने के कई तरीके हैं, लेकिन यह काफी सिस्टम निर्भर होने जा रहा है। (यह सुनिश्चित करना उतना सरल हो सकता है कि आपके पास उचित फ़ॉन्ट पैकेज स्थापित है।)

आप उन फ़ॉन्ट्स को सेट कर सकते हैं जो matplotlib आपके .matplotlibrc file में उपयोग करेंगे। यदि आपको सटीक फ़ॉन्ट नहीं मिल रहा है जिसे आप उपयोग करने का प्रयास कर रहे हैं, तो आप .matplotlibrc फ़ाइल में उचित .ttf फ़ॉन्ट फ़ाइल का पूरा पथ निर्दिष्ट कर सकते हैं। आमतौर पर आपको ऐसा करने की आवश्यकता नहीं होगी, हालांकि।

हालांकि, ऊपर निर्दिष्ट विशेष मामले में, एक आसान तरीका है।

आम तौर पर, आप ग्रीक प्रतीकों जैसी चीजों के लिए matplotlib's mathtext rendering का उपयोग बंद कर रहे हैं। जैसे इसके बजाय matplotlib.pyplot.xlabel(r'Sarcomere Length ($\mu m$)') करें।

+1

मैं केवल इकाइयों के लिए कंप्यूटर मॉडर्न का उपयोग करने से बचने की उम्मीद कर रहा था, लेकिन मुझे लगता है कि यह एक सौदा का बड़ा नहीं है। – srunni