Нежелательное изменение размера фигуры из-за таблицы LaTeX - PullRequest
0 голосов
/ 16 июня 2020

Я делаю отчеты, которые включают в себя цифры matplotlib (matplotlib.pyplot) и таблицы (LaTeX). Стиль дома требует рамки вокруг страницы и прямоугольников для lo go и знаков утверждения.

Когда я создаю фигуру и добавляю рамку, проблем нет. Но когда я добавляю таблицу LaTeX, которая шире определенной ширины, рамка начинает сжиматься, ie масштаб меняется. В настоящее время я использую Matplotlib 3.2.1. Недавно я перешел с Matplotlib 2.2.2, где не произошло изменения масштаба. Я обновил из-за не связанной проблемы.

Минимальный пример:

from matplotlib import rc
import matplotlib.pyplot as plt

rc('text', usetex=True)
font = {'size': '7.2',
        'fontname': 'sans'}
rc('text.latex', preamble=r'\usepackage{booktabs}')

# Create page with frame
page = plt.figure(figsize=(5, 2))
ax = plt.gca()
ax.set_xlim(0, 5)
ax.set_ylim(0, 2)
plt.axis('off')
plt.plot([0.5, 4.5, 4.5, 0.5, 0.5],
         [0.25, 0.25, 1.75, 1.75, 0.25])
page.set_tight_layout(True)
plt.savefig('test.png')

# Add LaTeX table to the page
tbl = r"\begin{tabular}{p{1in}|p{1.7in}p{1.7in}} \toprule " \
      r" enter image description herefoo bar & foo & bar \\" \
      r" \bottomrule \end{tabular}"
plt.text(2.5, 1, tbl, ha='center')
plt.savefig('test2.png')

Результаты: test.png, с правильным фреймом test2.png, со сжатым фреймом

В этом случае вы можете видеть, что фрейм сжат. В моем случае рама из-за этого больше не соответствует домашнему стилю.

В моем случае сделать стол более узким не вариант. В моем реальном приложении размер фрейма начинает изменяться, даже когда таблица находится внутри фрейма. Я попробовал plt.autoscale(enable=False, axis='x') и снова установил размер фигуры в конце. Это не имело значения.

Есть ли способ предотвратить изменение масштаба кадра?

...