69

私の問題は、一部のプロットではラテックスタイトルを使用し、他のプロットではラテックスタイトルを使用したくないということです。現在、matplotlibにはラテックスタイトルと非ラテックスタイトルの2つの異なるデフォルトフォントがあり、2つを一貫させたいと思います。これを自動的に許可するように変更する必要があるRC設定はありますか?

次のコードでプロットを生成します。

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()

これが私が話している矛盾です。軸の目盛りラベルは、タイトルに比べて薄く見えます。

4

2 に答える 2

66

tex-style / mathtextテキストを通常のテキストのようにするには、mathtextフォントをBitstreamVeraSansに設定する必要があります。

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を設定することで、Latexに1つのフォントですべてをレンダリングさせることもできますが、それは遅く、完全に必要というわけではありません。

于 2014-12-29T23:12:48.177 に答える
17

編集

matplotlib内でLaTeXが使用するフォントを変更したい場合は、このページをチェックしてください

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

そこにある例の1つ

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)}$')

編集2

以下は、太字フォントをデフォルトにします

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

rc('font', **font)
于 2012-07-06T18:36:30.857 に答える