4

数学の授業用にいくつかのグラフを作成していますが、プロットの凡例でピースワイズ定義の間隔を正しく設定できません。私は現在使用しています

\,

TeXの単一のスペースの場合、左の方程式がどれだけ占めるかにより、一方が他方よりわずかに上にある状況に遭遇します。これが私のコードです

import matplotlib.pyplot as plt
import numpy as np
import math as math

# 0-1
x = np.linspace(0, 1)
y = np.power(x, 2)
plt.plot(x, y, label=r"$t^2 \,\,\,\,\,\, 0 \leq t \leq 1$")

#1-2
x = [1,2]
y = [1,1]
plt.plot(x, y, label=r"$1 \,\,\,\,\,\,\, 1 < t \leq 2$")

#2-3
x = np.linspace(2, 3)
y = 3-x
plt.plot(x, y, label=r"$3 - t \,\,\,\, 2 < t \leq 3$")


plt.grid()
plt.axis([0,3,0,1.5])
plt.legend(loc='upper right')
plt.show()

これが結果です

左のピクセルサイズに関係なく常に機能するように、これを効果的にフォーマットするにはどうすればよいですか?

4

1 に答える 1

6

低レベルの LaTeX にアクセスすることで、間隔を確実に改善できます。まず、プロットの先頭で次を実行します。

from matplotlib import rc
rc('text', usetex=True)

\makeboxとを組み合わせて使用\hfill​​すると、2 つのセクション間のスペースを埋めることができます。

label=r"\makebox[4cm]{$t^2$ \hfill $0 \leq t \leq 1$}"
label=r"\makebox[4cm]{$1$ \hfill $1 < t \leq 2$}"
label=r"\makebox[4cm]{$3 - t$ \hfill $2 < t \leq 3$}"

ここに画像の説明を入力

確かにこれは完璧ではありませんが、複数\makeboxと塗りつぶしを組み合わせることで、必要なものを微調整できます。理想的には、TeX の複数行ブロックを「認識する」カスタム凡例ハンドラーを作成できますが、これは自明ではないと確信しています。

于 2013-05-29T15:17:48.647 に答える