Я пытаюсь использовать matplotlib для подготовки некоторых рисунков к публикации. Чтобы размеры шрифта соответствовали тексту рукописи, я пытаюсь сначала создать рисунок в окончательном размере, чтобы избежать масштабирования рисунка при вставке его в рукопись.
Проблема, с которой я столкнулся, заключается в том, что, поскольку рисунок тогда довольно мал, я могу масштабировать размеры шрифта, размеры осей, ширину линий и т. Д., Но я не смог понять, как масштабировать штрих или пунктир линии, а также толщина рамки легенды. Для упрощенного и несколько преувеличенного примера рассмотрим
#!/usr/bin/python
small = True
from matplotlib import use
use('pdf')
from matplotlib import rc
rc('ps', usedistiller='xpdf')
rc('text', usetex=True)
if small:
figsize = (1.0, 0.5)
rc('font', size=2)
rc('axes', labelsize=2, linewidth=0.2)
rc('legend', fontsize=2, handlelength=10)
rc('xtick', labelsize=2)
rc('ytick', labelsize=2)
rc('lines', lw=0.2, mew=0.2)
rc('grid', linewidth=0.2)
else:
figsize = (8,8)
import numpy as np
x = np.arange(0, 10, 0.001)
y = np.sin(x)
import matplotlib.pyplot as plt
f = plt.figure(figsize=figsize)
a = f.add_subplot(111)
a.plot(x, y, '--', label='foo bar')
a.legend()
f.savefig('mplt.pdf')
Если вы измените первую исполняемую строку на small = False
, вы увидите, как она должна выглядеть в «нормальном» размере. По сравнению с обычным размером на небольшом графике присутствует поле легенды со слишком толстыми границами, а пунктирная линия слишком грубая, то есть слишком длинные штрихи и слишком большое расстояние между штрихами.
Итак, мой вопрос, есть ли способ исправить эти две проблемы?
Я использую версию matplotlib 0.99.1.2.