プロットにテキストを追加し、各行にコーディングしてから、適切に見えるように調整したり、幅を増減したり、配置を変更したりしました。ただし、テキストを配置する場所と設定方法を Python に認識させる方法はありますか? 次に、テキストを追加すると、Python が詳細を解決します。
たとえば、次の画像を見てください。
図では、左上隅に 3 行のテキストがあり、プロットの行の上に 1 行あります。
適切な間隔を確保するために、3 行を調整する必要がありました。これは難しい作業ではありませんが、ここがテキストで、ここが場所で、Python が適切な間隔でそれを積み重ねると言えれば簡単です。
一本線については、線上にならないように調整し、線を下げる必要がありました。この場合、Python に、プロットの上と 80% 下のテキストが必要だと伝えることは可能ですか?
LaTeX
座標をハードコーディングせずにこの調整を行うことができる場所に慣れています。利点は
(1) if I want to change the location, I can change the percentage shift and not the coordinate.
(2) if the line is angled, the text will adjust to the line.
(2)の利点は、線で上向きに傾斜する図の上部にテキストを配置しようとしていることです。
これを行うことができますか、それとも私は多くを求めていますか? もしそうなら、どうすればいいですか?
図を実装するコードは次のとおりです。
import numpy as np
import pylab
r1 = 1 # AU Earth
r2 = 1.524 # AU Mars
deltanu = 75 * np.pi / 180 # angle in radians
mu = 38.86984154054163
c = np.sqrt(r1 ** 2 + r2 ** 2 - 2 * r1 * r2 * np.cos(deltanu))
s = (r1 + r2 + c) / 2
am = s / 2
def g(a):
alphag = 2* np.pi - 2 * np.arcsin(np.sqrt(s / (2 * a)))
return (np.sqrt(a ** 3 / mu)
* (alphag - betag - (np.sin(alphag) - np.sin(betag))))
def f(a):
alpha = 2 * np.arcsin(np.sqrt(s / (2 * a)))
beta = 2 * np.arcsin(np.sqrt((s - c) / (2 * a)))
return (np.sqrt(a **3 / mu) * (alpha - betag - (np.sin(alpha)
- np.sin(betag))))
betag = -2 * np.arcsin(np.sqrt((s - c) / (2 * a)))
a = np.linspace(am, 2, 500000)
a = np.linspace(am, 2, 500000)
fig = pylab.figure()
ax = fig.add_subplot(111)
ax.plot(a, f(a), color = '#000000')
ax.plot(a, g(a), color = '#000000')
pylab.xlim((0.9, 2))
pylab.ylim((0, 2))
pylab.xlabel('Semi-major Axis $a$ in AU')
pylab.ylabel('Time of Flight in Years')
pylab.text(1, 1.8, '$r_1 = 1.0$ AU', fontsize = 11, color = 'r')
pylab.text(1, 1.7, '$r_2 = 1.524$ AU', fontsize = 11, color = 'r')
pylab.text(1, 1.6, '$\\Delta \\nu = 75^{\\circ}$', fontsize = 11,
color = 'r')
pylab.text(1.75, 0.35, '$\\alpha = \\alpha_0$', fontsize = 11,
color = 'r')
pylab.savefig('lamberttransferties.eps', format = 'eps')
pylab.show()