2016-05-25 14 views
1

私はこの問題をここに表示していますが、まだ適切な答えを見つけていません。LaTeXフォントをデフォルトのmatplotlibフォントに一致させるようにしてください

matplotlibでプロットを作成する場合、記号や数学関数(小数点や指数など)を挿入する唯一の方法は、TeXの書式設定を使用することです。しかし、デフォルトでは、TeXの書式設定は異なるフォントを使用し、テキストをイタリック体で表します。私は次の操作を実行する必要が

光子/ cmで^ 2/sの/オングストローム

:私は次のことを言うために、軸ラベルたかったのであれば、たとえば、

ax1.set_ylabel(r'Photons/$cm^2$/s/$\AA$') 

をこれは非常に生産します2つの異なるフォントを使用し、イタリック体のビットとピースを持つ醜いラベル。

それはmatplotlibので使用されるデフォルトのフォントと一致するようにどのように私は永久にのフォントはTeX(逆ではない)を変更できますか?

たとえば、\ mathrm {}を使って手動ですべてのテキストをプロット内で同じにするように指示する他の解決策を見てきましたが、これはばかげて面倒です。 matplotlibのデフォルトのフォントをTeXとマッチさせるような解決法も見てきましたが、これはまったく逆のようです。

答えて

0

解決策はかなり単純で、私の同僚に解決策があることが判明しました。

Iは、タイトルを作成するためのコード行を使用した場合:

fig.suptitle(r'$H_2$ Emission from GJ832') 

結果は、私が持っていた問題の説明図である「GJ832からHエミッション」であろう。しかし、$$の中の何ものも数学型に変換され、イタリック体が割り当てられていることが分かります。

我々は、次のコード行を変更した場合:

fig.suptitle(r'H$_2$ Emission from GJ832') 

すると結果はイタリックなし「GJ832からH 排出量」です。

:だからこれは私が次のようにコードを変更した場合、すなわち、しかし、2

の添字を作成し、我々は、テキストの唯一の数学の部分が含まれるように数学のタイプを制約することができる場所の例です。

fig.suptitle(r'H$_{two}$ Emission from GJ832') 

結果は再びイタリックを導入「GJ832からH エミッション」であろう。この場合、あなたはドル記号内のテキスト(または単位記号を作成している)を持っている必要がありますどのような場合のために、あなたは簡単にイタリック体に以下の方法を削除することができます

fig.suptitle(r'H$_{\rm two}$ Emission from GJ832') 

または記号を作成した場合の: "H 排出GJ832から"

ax2.set_xlabel(r'Wavelength ($\rm \AA$)') 

前者の結果と "波長(A)" の後者 Aはオングストロームシンボルがあります。

ドル記号で囲まれたテキストまたは記号の前に\ rmを付けることで、これらの両方が目的の結果を得ます。結果は\ AAによって作成されたオングストローム記号を含むイタリック体ではありません。

これはTeXフォーマットのデフォルトを変更しませんが、問題の簡単な解決方法であり、新しいパッケージは必要ありません。とにかく、Roland Smithに提案していただきありがとうございます。私は、これが同じ問題に苦しんでいる他の人を助けることを願っています。

0

組版単位の場合は、数値モードではなくsiunitxパッケージ(mode=text)を使用してください。

更新:上記は、rc設定でtext.usetex : Trueと定義した場合にのみ有効です。 matplotlib docsから

:あなたはmatplotlibの船独自のTeXの式パーサー、レイアウトエンジンとフォント以来、TeXがインストールされている必要はありません

注意。

そして:

通常のテキストとmathtextは、同じ文字列の中にインターリーブすることができます。 MathtextはComputer Modernフォント((La)TeX製)、STIXフォント(Timesとよく調和するように設計されています)またはユーザーが提供するUnicodeフォントを使用できます。 mathtextフォントがこれを読んでカスタマイズ変数mathtext.fontset

を選択することができ、それはあなたがTeXに使用していない場合はmathtext.fontsetを設定し、matplotlibの通常のフォントが同じ使用しても問題が解決するだろうということですね。

+0

新しい構文を学ぶ必要はありませんが、それは実際には悪い解決策ではありません。しかし、私はSI単位ではなく、むしろcgs単位で作業しています(パッケージには表示されない単位が2つしかありませんが、頻繁に使用される単位になります)。返信いただきありがとうございます! –

+0

'\ DeclareSIUnit'で新しいユニットを追加できます。 –

+0

@ Will.EvoあなたはTeXを使用していないかもしれません。更新された回答をご覧ください。 –

関連する問題