当使用matplotlib更改图形大小时,缩放图例边框,虚线和虚线

jan*_*neb 4 python plot matplotlib

我正在尝试使用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')
Run Code Online (Sandbox Code Playgroud)

如果您更改第一个可执行行,small = False您可以看到它应该以"正常"大小显示.与正常尺寸相比,小图受到边框太厚的图例框的影响,并且虚线太粗糙,即破折号太长并且破折号之间的距离太长.

所以我的问题是,有没有办法解决这两个问题?

我使用的matplotlib版本是0.99.1.2.

Jou*_*nen 8

要调整破折号,请使用

a.plot(x, y, '--', label='foo bar', dashes=(2,2))
Run Code Online (Sandbox Code Playgroud)

图例框线宽,

lg = a.legend()
fr = lg.get_frame()
fr.set_lw(0.2)
Run Code Online (Sandbox Code Playgroud)