考虑这个简单的例子:
#setup figure
import matplotlib.pyplot as plt
import pylab
import math
import numpy as np
#output control
fig_width_pt = 345.0 # Get this from LaTeX using \showthe\columnwidth
inches_per_pt = 1.0/72.27 # Convert pt to inch
golden_mean = (math.sqrt(5)-1.0)/2.0 # Aesthetic ratio
fig_width = fig_width_pt*inches_per_pt # width in inches
fig_height = fig_width*golden_mean # height in inches
fig_size = [fig_width,fig_height]
params = {'backend': 'ps',
'axes.labelsize': 10,
'text.fontsize': 10,
'legend.fontsize': 8,
'xtick.labelsize': 8,
'ytick.labelsize': 8,
'text.usetex': True,
'figure.figsize': fig_size,
'figure.dpi': 1000,
'savefig.dpi': 1000}
pylab.rcParams.update(params)
plt.figure().add_subplot(1,1,1)
#plot some lines
dashes = [(None, None), [2, 2], [7, 4, 3, 4]]
titles = ["really long title one", "long title the second", "an even longer title, am I right?"]
for i in range(3):
x = np.arange(i, i + np.pi/2.0, 0.01)
y = np.sin(x) + i
line,= plt.plot(x, y, label = titles[i])
line.set_dashes(dashes[i])
plt.legend()
plt.show()
使用' legend.fontsize':8运行这个简单的程序会产生。请注意,点划线的虚线样式(图例中的第三个)很难解释。如果你放大,你会看到微小的黑点显示它对应于图形,但这并不理想。
我已经能够通过将图例字体大小更改为10来解决此问题,从而产生,但这对于我的实际数字来说太大了。
有关如何确保显示完整的linestyle / dashstyle的任何想法?
答案 0 :(得分:12)
您可以通过设置handlelength
关键字来更改图例中的线条长度(不更改字体)。尝试
plt.legend(handlelength=3)