2016-11-14 53 views
2

我想在Seaborn中使用Unicode文本。 (Python 2.7)在seaborn中使用Unicode文本

我可以使用Unicode文本作爲matplotlib的圖塊。 例如,

import matplotlib.pyplot as plt 
from matplotlib.font_manager import FontProperties 
fp = FontProperties(fname='/usr/share/fonts/truetype/takao-gothic/TakaoGothic.ttf') 
text = u'bădărău' 
plt.plot([1,2,3,2], label=text) 
plt.legend(prop=fp) 

如何設置這種字體屬性來seaborn? 其實,我想用Unicode文本爲註釋,如下例所示:

import seaborn as sns 
import numpy as np 
sns.heatmap(np.array([[1,2,3]]), annot=np.array([['a', 'b', 'c']]), fmt='') 
# want to use ă instead of a 

如果我使用ă,我收到以下錯誤

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 0: ordinal not in range(128) 
+1

您可能會覺得這篇文章有用:[Pragmatic Unicode](http://nedbatchelder.com/text/unipain.html),它是由SO老手Ned Batchelder編寫的。 –

回答

1

該爾德鏈接是很好的瞭解,但如果你目前正在用自己的字符串繪製圖形,而不是傳入代碼的圖形,試試這個。該matplotlib documentation介紹瞭如何在源代碼中使用unicode文字:

# -*- coding: utf-8 -*- 
from __future__ import unicode_literals 

import seaborn as sns 
from matplotlib.pyplot import show 
import numpy as np 

sns.set(font="Meiryo") 
sns.heatmap(np.array([[1,2,3]]), annot=np.array([['ë', 'bădărău', 'ê']]),fmt='') 
show() 

結果:

enter image description here

我挑的字體了安裝在我的系統上的國家:

from matplotlib import font_manager 

font_paths = font_manager.findSystemFonts() 
font_objects = font_manager.createFontList(font_paths) 
font_names = [f.name for f in font_objects] 
print font_names 

another SO