2012-07-06 114 views
28

我的問題是我想在某些地塊使用乳膠標題,而其他地方不使用乳膠。現在,matplotlib有Latex標題和非Latex標題的兩種不同的默認字體,我希望兩者保持一致。是否有RC設置,我必須改變,這將自動允許這個?Matplotlib,使用乳膠的一致字體

我產生用下面的代碼一個情節:

import numpy as np 
from matplotlib import pyplot as plt 

tmpData = np.random.random(300) 

##Create a plot with a tex title 
ax = plt.subplot(211) 
plt.plot(np.arange(300), tmpData) 
plt.title(r'$W_y(\tau, j=3)$') 
plt.setp(ax.get_xticklabels(), visible = False) 

##Create another plot without a tex title 
plt.subplot(212) 
plt.plot(np.arange(300), tmpData) 
plt.title(r'Some random numbers') 
plt.show() 

這是我講的不一致。軸刻度標籤是薄尋找相對標題:

+0

我相信[這個答案](http://stackoverflow.com/questions/11611374/sans-serif-font-for-axes-tick-labels-with-latex)會幫助你 – 2017-05-02 13:37:03

回答

26

要使tex-style/mathtext文本看起來像常規文本,您需要將mathtext字體設置爲Bitstream Vera Sans,

import matplotlib 
matplotlib.rcParams['mathtext.fontset'] = 'custom' 
matplotlib.rcParams['mathtext.rm'] = 'Bitstream Vera Sans' 
matplotlib.rcParams['mathtext.it'] = 'Bitstream Vera Sans:italic' 
matplotlib.rcParams['mathtext.bf'] = 'Bitstream Vera Sans:bold' 
matplotlib.pyplot.title(r'ABC123 vs $\mathrm{ABC123}^{123}$') 

如果您希望常規文本看起來像mathtext文本,您可以將所有內容都更改爲Stix。這將影響到標籤,標題,蜱,等

import matplotlib 
matplotlib.rcParams['mathtext.fontset'] = 'stix' 
matplotlib.rcParams['font.family'] = 'STIXGeneral' 
matplotlib.pyplot.title(r'ABC123 vs $\mathrm{ABC123}^{123}$') 

基本思想是,你需要同時設置定期和mathtext字體是相同的,而這樣做的方法是有點模糊。您可以看到自定義的字體列表,

sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist]) 

正如其他人所提到的,你也可以通過乳膠在rcParams設置text.usetex渲染你的一切與一個字體,但這是緩慢和不完全必要的。

11

編輯如果你想改變由內而外matplotlib乳膠使用的字體,看看這個頁面

http://matplotlib.sourceforge.net/users/usetex.html

其中一個例子是

from matplotlib import rc 
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']}) 
## for Palatino and other serif fonts use: 
#rc('font',**{'family':'serif','serif':['Palatino']}) 
rc('text', usetex=True) 

只需選擇你喜歡的!

如果你想有一個加粗的字體,你可以嘗試\mathbf

plt.title(r'$\mathbf{W_y(\tau, j=3)}$') 

EDIT 2

下面將加粗字體默認爲您

font = {'family' : 'monospace', 
     'weight' : 'bold', 
     'size' : 22} 

rc('font', **font) 
+0

我想我應該澄清我的題。現在,我認爲Latex字體是醜陋的字體,我想將它與非乳膠字體一致。如果地塊縮小並放在論文/出版物中,我想要更厚一點的東西,這樣我的情節文本仍然可讀。 – ncRubert 2012-07-06 18:44:04

+0

@ncRubert gotcha,然後檢查我更新的答案。 – nye17 2012-07-06 18:47:00

+0

另一個解釋。我想讓軸標籤變得更厚。它們是圖中最不可讀的部分。我更新了這個問題來反映這一點。 – ncRubert 2012-07-06 19:11:08