matplotlib通过一个函数设置图例和绘图线属性

时间:2014-04-03 19:46:16

标签: 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))
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(...)):

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)

因此带有图例框的线条具有正确的厚度,但长度接近一半,标记尺寸不会改变。

1 个答案:

答案 0 :(得分:1)

可悲的是,这是matplotlib中确认的错误:

https://github.com/matplotlib/matplotlib/issues/2035