2013-07-27 97 views
3

我正在嘗試在Xcode中使用Matplotlib & Python來生成科學圖形。我的老闆希望他們在LaTeX中使用匹配的字體。我知道你可以像這樣修改字體在python:python乳膠字體xcode

from matplotlib import rc 
rc('font',**{'family':'serif','serif':['Computer Modern Roman']}) 
rc('text', usetex=True) 

不幸的是,打開或保存與plt.show()plt.savefig()圖中給出了錯誤的字符串,最終導致OSError: [Errno 2] No such file or directory

我知道「Google是你的朋友」,但我還沒有設法找到任何關於如何去解決這個問題。任何幫助將不勝感激。

+0

[與OSX 10.8中的usetex問題]可能的重複(http://stackoverflow.com/questions/11797480/problems-with-usetex-in-osx-10-8) – hooy

+0

鏈接問題中的答案之一解決了這個問題,謝謝!將/ usr/texbin中的膠乳路徑添加到允許膠乳字體的方案中的xcode環境中。 – pgierz

回答

1

我通常發現它最簡單直接指定字體文件我後。這裏有一個例子:

import matplotlib.pyplot as plt 
import matplotlib.font_manager 
from numpy import * 

# cmunso.otf is a randomly selected font in my tex installation 
path = '/usr/local/texlive/2012/texmf-dist/fonts/opentype/public/cm-unicode/cmunso.otf' 
f0 = matplotlib.font_manager.FontProperties()  
f0.set_file(path) 

plt.figure() 
plt.xlim(0,1.) 
plt.ylim(0,1.) 

d = arange(0, 1, .1) 
plt.plot(d, d, "ob", label='example') 

plt.text(.5, .1, 'text.. abcdef', fontproperties=f0, size=30) 
plt.xlabel("x label", fontproperties=f0) 
plt.legend(prop=f0, loc=2) 

enter image description here

我不是字體的專家,但我認爲這是比較容易的原因是,字體的選擇往往有當您指定的方式進行級聯組缺省值字體與系統不完全匹配。但是,該文件很容易找到並指定(儘管它明顯不便於攜帶)。

注意,對於xlabeltext關鍵詞是fontpropertieslegend這是prop

+1

該解決方案的一個「缺點」是數學正在使用mathtext(使用指定的字體)而不是真正的LaTeX進行處理,從而給出了稍微不同的最終結果。 – hooy

+0

雖然我最終使用了不同的方法來解決此問題,但此處介紹的解決方案可以運行,並且對其他潛在應用程序很有用。如果我正確地理解了它,你可以使用它來獲取任何字體,而不僅僅是Python本能地知道的。 – pgierz