Matplotlib и латексный луч: правильный размер

Было задано несколько вопросов об интеграции matplotlib / Python и латекса, но я не мог найти следующее:

Когда я включаю savefig() созданные файлы PDF в латекс, я всегда

 includegraphics[scale=0.5]{myFile.pdf} 

И масштаб обычно составляет 0.4 или 0.5 . Учитывая, что я создаю слайды лучей A5, каков правильный способ создания PDF-файлов в правильном размере для этого, так что мне не нужно указывать это в латекс?

Обратите внимание, что это не полноразмерные слайды для фотоснимков только для изображений, их нужно немного уменьшить, чтобы заголовок, нижний колонтитул и подпись.

См. Эту поваренную книгу matplotlib для создания графиков качества публикации для латекса. По существу, чтобы сохранить постоянный размер всех атрибутов фигур (легенда и т. Д.), Следует избегать масштабирования при импорте цифр в латекс. Предлагаемый подход заключается в следующем:

  1. Найдите ширину линии вашего латексного документа в пикселях. Это можно сделать, временно вставляя где-то в ваш документ, \showthe\columnwidth
  2. Определите вспомогательные функции в python, которые будут использоваться для вычисления размера фигуры,

     def get_figsize(columnwidth, wf=0.5, hf=(5.**0.5-1.0)/2.0, ): """Parameters: - wf [float]: width fraction in columnwidth units - hf [float]: height fraction in columnwidth units. Set by default to golden ratio. - columnwidth [float]: width of the column in latex. Get this from LaTeX using \showthe\columnwidth Returns: [fig_width,fig_height]: that should be given to matplotlib """ fig_width_pt = columnwidth*wf inches_per_pt = 1.0/72.27 # Convert pt to inch fig_width = fig_width_pt*inches_per_pt # width in inches fig_height = fig_width*hf # height in inches return [fig_width, fig_height] 
  3. Затем рисунки производятся с,

     import matplotlib import matplotlib.pyplot as plt # make sure that some matplotlib parameters are identical for all figures params = {'backend': 'Agg', 'axes.labelsize': 10, 'text.fontsize': 10 } # extend as needed matplotlib.rcParams.update(params) # set figure size as a fraction of the columnwidth columnwidth = # value given by Latex fig = plt.figure(figsize=get_figsize(columnwidth, wf=1.0, hf=0.3) # make the plot fig.savefig("myFigure.pdf") 
  4. Наконец, эта цифра импортируется в латекс без какого-либо масштабирования,

     \includegraphics{myFigure.pdf} 

    таким образом, обеспечивая, среди прочего, то, что, скажем, 12pt текст в matplotlib соответствует тому же размеру шрифта в документе Latex.

Вам лучше определить абсолютный размер изображения, а не масштаб. (Вы можете указать высоту, если это более удобно, и можете использовать cm в качестве единиц)

 \includegraphics[height=4in]{myFile.pdf} 

Еще лучше определите макрос, который вставляет ваши изображения. Вот один, который вставляет изображение, не обертывая его фигурой (включая надпись, пробел и т. Д.),

 \newcommand{\plotstandard}[1]{\centerline{\includegraphics[height=4in]{#1}}} 

который называется использованием

 \plotstandard{myFile.pdf}