这里有一个简单的问题:我正在尝试使用 matplotlib.pyplot
使我的图例的大小更小(即文本更小)。我正在使用的代码是这样的:
plot.figure()
plot.scatter(k, sum_cf, color='black', label='Sum of Cause Fractions')
plot.scatter(k, data[:, 0], color='b', label='Dis 1: cf = .6, var = .2')
plot.scatter(k, data[:, 1], color='r', label='Dis 2: cf = .2, var = .1')
plot.scatter(k, data[:, 2], color='g', label='Dis 3: cf = .1, var = .01')
plot.legend(loc=2)
您可以通过调整 prop
关键字为图例设置单独的字体大小。
plot.legend(loc=2, prop={'size': 6})
这需要与 matplotlib.font_manager.FontProperties
属性对应的关键字字典。请参阅 documentation for legend:
关键字参数: prop: [ 无 |字体属性 | dict ] matplotlib.font_manager.FontProperties 实例。如果 prop 是字典,将使用 prop 创建一个新实例。如果没有,使用 rc 设置。
从版本 1.2.1 开始,也可以使用关键字 fontsize
。
使用 import matplotlib.pyplot as plt
方法一:调用legend时指定fontsize(重复)
plt.legend(fontsize=20) # using a size in points
plt.legend(fontsize="x-large") # using a named size
使用此方法,您可以在创建时为每个图例设置字体大小(允许您拥有多个具有不同字体大小的图例)。但是,每次创建图例时都必须手动输入所有内容。
(注意:@ Mathias711 在他的回答中列出了可用的命名字体大小)
方法二:在rcParams中指定fontsize(方便)
plt.rc('legend',fontsize=20) # using a size in points
plt.rc('legend',fontsize='medium') # using a named size
使用此方法,您可以设置默认图例字体大小,除非您使用方法 1 另有指定,否则所有图例都会自动使用该字体大小。这意味着您可以在代码开头设置图例字体大小,而不必担心为每个单独的图例设置它.
如果您使用命名大小,例如 'medium'
,则图例文本将随 rcParams
中的全局 font.size
缩放。要更改 font.size
,请使用 plt.rc(font.size='medium')
这应该做
import pylab as plot
params = {'legend.fontsize': 20,
'legend.handlelength': 2}
plot.rcParams.update(params)
然后再做剧情。
还有很多其他的 rcParam,它们也可以在 matplotlibrc 文件中设置。
也大概您可以通过 matplotlib.font_manager.FontProperties
实例更改它,但我不知道该怎么做。 -->见 Yann 的回答。
matplotlib.rc('legend', fontsize=0.5, linewidth=2)
legend.handlelength
而不是 legend.linewidth
除了以磅为单位的大小外,还有一些名为 fontsizes 的名称:
xx-small
x-small
small
medium
large
x-large
xx-large
用法:
pyplot.legend(loc=2, fontsize = 'x-small')
现在在 2021 年,您可以使用 matplotlib 3.4.2 设置您的图例字体
plt.legend(title="My Title", fontsize=10, title_fontsize=15)
其中 fontsize
是图例中项目的字体大小,title_fontsize
是图例标题的字体大小。 matplotlib documentation 中的更多信息
有多种设置可用于调整图例大小。我觉得最有用的两个是:
labelspacing:以字体大小的倍数设置标签条目之间的间距。例如,对于 10 磅字体,legend(..., labelspacing=0.2) 会将条目之间的间距减少到 2 磅。我安装的默认值约为 0.5。
prop:允许完全控制字体大小等。您可以使用 legend(..., prop={'size':8}) 设置 8 点字体。我安装的默认值约为 14 点。
此外,legend documentation 列出了许多其他填充和间距参数,包括:borderpad
、handlelength
、handletextpad
、borderaxespad
和 columnspacing
。这些都遵循与标签间距和区域相同的形式,也是字体大小的倍数。
也可以使用 matplotlibrc file 将这些值设置为所有图形的默认值。
在我的安装中,FontProperties 只改变了文本大小,但它仍然太大而且间隔很大。我在 pyplot.rcParams
中找到了一个参数:legend.labelspacing
,我猜它设置为字体大小的一小部分。我改变了它
pyplot.rcParams.update({'legend.labelspacing':0.25})
我不确定如何将其指定给 pyplot.legend 函数 - 传递
prop={'labelspacing':0.25}
或者
prop={'legend.labelspacing':0.25}
返回错误。
plot.legend(loc = '右下', decimal_places = 2, fontsize = '11', title = '嘿', title_fontsize = '20')
您可以减小图例大小设置:
plt.legend(labelspacing=y, handletextpad=x,fontsize)
labelspacing 是每个标签之间的垂直间距。 handletextpad 是实际图例和标签之间的距离。字体大小是不言自明的
plot.rcParams.update
的详细信息吗?matplotlib
选择一种违反直觉的方式为legend
自定义字体?