Я делаю сюжет с matplotlib и создаю легенду для этого (см. Код ниже). Я хочу, чтобы строки легенд были выровнены по горизонтали, так что отношения >
и <
выровнены. Попытка адаптировать this и this код подобных проблем, я застрял.Выровнять строки легенды в matplotlib
Я понимаю основную идею: используйте \makebox[width][alignment]{math expression before aligment}<math expression after alignment
как метку, так что пространство, используемое этим эпсилон-выражением, всегда использует одно и то же пространство и выравнивается вправо, следовательно, есть свободное пространство слева.
Но методы \hfill
, используемые в ссылках, работают только в том случае, если перед ним есть hfill, или если выравнивание стандартно (слева). Решение должно быть довольно близко, и любая помощь будет оценена. Это как текст легенды должен выглядеть
import numpy
from matplotlib import pyplot as plt
plt.rc('text', usetex=True) # needed for interpeting tex strings, but changes appearence of axis-tick labels also
fig = plt.figure(1,figsize=(12.0, 8.0))
plt.ion()
# does not align the '<', '<' and '>' in the legend
# plt.plot(numpy.random.rand(10), label=r'\makebox[2cm][r]{$\varepsilon_i$}$< -\xi$')
# plt.plot(numpy.random.rand(10), label=r'\makebox[2cm][r]{$|\varepsilon_i|$}$< \xi$')
# plt.plot(numpy.random.rand(10), label=r'\makebox[2cm][r]{$\varepsilon_i$}$ > \xi$')
# \hfill doesnt change anything
# plt.plot(numpy.random.rand(10), label=r'\makebox[2cm][r]{\hfill$\varepsilon_i$}$< -\xi$')
# plt.plot(numpy.random.rand(10), label=r'\makebox[2cm][r]{\hfill$|\varepsilon_i|$}$< \xi$')
# plt.plot(numpy.random.rand(10), label=r'\makebox[24cm][r]{\hfill$\varepsilon_i$}$ > \xi$')
# the relations are aligned, but i do not want to plot the 'bla' for this
plt.plot(numpy.random.rand(10), label=r'\makebox[2cm][r]{bla\hfill$\varepsilon_i$}$< -\xi$')
plt.plot(numpy.random.rand(10), label=r'\makebox[2cm][r]{bla\hfill$|\varepsilon_i|$}$< \xi$')
plt.plot(numpy.random.rand(10), label=r'\makebox[2cm][r]{bla\hfill$\varepsilon_i$}$ > \xi$')
plt.legend(loc='upper right')
plt.show()
Причина это происходит потому, что поле на рисунке взята из ограничительной рамки выводимого текста, а не от того, где появится на странице, что текст. Попытка найти решение ... – mdurant
Мне кажется, вам нужно будет добавить невидимый символ, либо белого цвета, либо исчезающе маленький - для этого вам потребуется добавить пакет цветов или выбрать масштабируемые шрифты, т. Е. Отредактировать предварительный текст отправлен в LaTeX. – mdurant
@mdurant Я думал о добавлении действительно невидимого символа с помощью '' \ vphantom {} ''. К сожалению, это тоже не имело никакого влияния. Изменение шрифтов кажется излишним. Возможно, я закончу настройку позиции вручную либо с помощью большого количества '' \, '', либо установкой позиции текста аргументом '' set_position''. Но я думал, что это должно как-то работать автоматически. – Nras