matplotlib通过一个函数设置图例和打印线特性

matplotlib通过一个函数设置图例和打印线特性,matplotlib,Matplotlib,我注意到,通过在设置打印线属性之前调用plt.legend(),带有图例框的线没有根据设置进行相应调整。 以下是一个示例打印和一个用于设置图例和打印线特性的函数: import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.add_subplot(111) ax.plot(range(10), '-x', label = 'legend text') ax.plot(2 * range(10)) l

我注意到,通过在设置打印线属性之前调用plt.legend(),带有图例框的线没有根据设置进行相应调整。 以下是一个示例打印和一个用于设置图例和打印线特性的函数:

import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(10), '-x', label = 'legend text')
ax.plot(2 * range(10))
leg = plt.legend(title = 'legend here')

def plotprop_adj(ax, leg, fs = 16, lw = 2, ms = 10)
    ltext = leg.get_texts()
    for item in ltext:
        item.set_fontsize(fs)
    for ln in ax.lines:
        ln.set_linewidth(lw)
        ln.set_markersize(ms)

plotprop_adj(ax, leg)  #  leaves lines in legend box with 
                       #+ different properties than the corresponding plots
因此,我尝试在图例中手动设置线条特性,如下所示(添加到plotprop_adj(…):


因此,带有图例框的线条具有正确的厚度,但长度接近一半,标记大小没有改变。

遗憾的是,这是matplotlib中确认的错误:

def plotprop_adj(ax, leg, fs = 16, lw = 2, ms = 10)
    [...]
    leg_ln = leg.get_lines()
    for ln in leg_ln:
        ln.set_linewidth(lw)
        ln.set_markersize(ms)