我注意到在设置绘图线属性之前调用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)
因此带有图例框的线条具有正确的厚度,但长度接近一半,标记尺寸不会改变。