我在Matplotlib中顯示非ASCII字符時出現問題,這些字符呈現爲小框而非適當的字體,它看起來像(我用紅色油漆填充這些框以高亮它們):Matplotlib中的非ASCII字符
如何解決呢?
有關的問題是Accented characters in Matplotlib。
我在Matplotlib中顯示非ASCII字符時出現問題,這些字符呈現爲小框而非適當的字體,它看起來像(我用紅色油漆填充這些框以高亮它們):Matplotlib中的非ASCII字符
如何解決呢?
有關的問題是Accented characters in Matplotlib。
這個問題實際上可能有幾個不同的原因:(!任何繪製完成之前)
默認字體不包含這些字形
您可以使用以下更改默認字體
matplotlib.rc('font', family='Arial')
在matplotlib你必須TE組家族的某些版本:
matplotlib.rc('font', **{'sans-serif' : 'Arial',
'family' : 'sans-serif'})
(請注意,由於sans-serif
包含**{}
語法內連字符,它實際上是必要的。)
第一個命令改變sans-serif
字體家族只包含一種字體(在我的情況下,它是Arial)時,第二個將默認字體系列設置爲sans-serif
。
其他選項包括在內in the documentation。
你不當創建/中國率先字符串對象到Matplotlib
即使字體包含正確字型,如果你忘了使用u
創建Unicode常數,Matplotlib都會有這樣的行爲:
plt.xlabel("Średnia odległość między stacjami wsparcia a modelowaną [km]")
所以你需要添加u
:
plt.xlabel(u"Średnia odległość między stacjami wsparcia a modelowaną [km]")
另一個原因是,你忘了在UTF-8魔評論文件的頂部(我讀這might be the source of the problem):
# -*- coding: utf-8 -*-
按照[文檔](http://matplotlib.org/api/artist_api .html#matplotlib.text.Text.set_family),您可以直接傳遞字體名稱而不是家族。這適用於我:'matplotlib.rc('font',family ='DejaVu Sans')' – Lekensteyn
這是最好的語法!我會離開舊的,以防其某種古代matplotlib版本需要它。 –