我在绘图中添加了文本,在每一行中编码,然后调整它看起来不错,增加或减少宽度,或更改位置。但是,有没有办法让 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()