6

プロットにテキストを追加し、各行にコーディングしてから、適切に見えるように調整したり、幅を増減したり、配置を変更したりしました。ただし、テキストを配置する場所と設定方法を 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()
4

1 に答える 1