2014-12-31 31 views
0

我想用一個標籤一個情節:使用UTF-8標籤matplotlib XKCD

plt.plot(np.sin(np.linspace(1,10)), label='fête') 
plt.legend(loc='upper left') 
plt.show() 

的偉大工程。現在讓我們試試xkcd模式:

plt.xkcd() 
plt.plot(np.sin(np.linspace(1,10)), label='fête') 
plt.legend(loc='upper left') 
plt.show() 

沒有錯誤,但標籤是'f?te'。這似乎是可能的,這是一個字體問題,所以我會補充說這是linux(ubuntu)。

+0

我在OS X上看不到這個問題,所以可能確實不是'matplotlib'的代碼庫中的錯誤,而是ubuntu上的字體問題。 – cel

+0

感謝您的測試點。 不幸的是,這可能是事實(它是ubuntu特有的)。這會讓人很難傷心地提出一個錯誤。字體明顯具有UTF-8字形(使用libreoffice進行測試)。 我在http://askubuntu.com/questions/567701/matplotlib-xkcd-with-utf-8-label上發佈了這個問題,如果我找到一個令人滿意的答案,我會在這裏和那裏繼續。 – jma

回答

0

Humor Sans字體沒有那個也沒有其他字形。

當您在LibreOffice上編寫代碼時,它會爲那些沒有指定字形的字體使用備份字體,這就是您所看到的備份字體。例如,請注意幽默三部分中所有字母的字形都是大寫字母,即使是那些鍵入小寫字母的字母,但是當您使用波形符號或重音符號鍵入字母時,它們都會顯示小寫字母與波形符號;那是因爲它是備份字體。

如果您使用其他漫畫般的字體,例如«Comic Sans»或«Stay Puft»,雖然它們不那麼漂亮,但問題不會發生。

在Windows或OSX上,默認情況下可能是«Comic Sans»用於帶有XKCD的matplotlib。