python 设置图例的大小_如何调整matplotlib图例框的大小?

要控制图例中的填充(有效地使图例框变大),请使用borderpadkwarg。

例如,以下是默认值:import matplotlib.pyplot as plt

import numpy as np

x = np.linspace(0, 10, 100)

fig, ax = plt.subplots()

for i in range(1, 6):

ax.plot(x, i*x + x, label='$y={i}x + {i}$'.format(i=i))

ax.legend(loc='upper left')

plt.show()

如果我们使用borderpad=2更改内部填充,则会使整个图例框变大(单位是字体大小的倍数,类似于em):import matplotlib.pyplot as plt

import numpy as np

x = np.linspace(0, 10, 100)

fig, ax = plt.subplots()

for i in range(1, 6):

ax.plot(x, i*x + x, label='$y={i}x + {i}$'.format(i=i))

ax.legend(loc='upper left', borderpad=2)

plt.show()

或者,您可能需要更改项目之间的间距。使用labelspacing来控制:import matplotlib.pyplot as plt

import numpy as np

x = np.linspace(0, 10, 100)

fig, ax = plt.subplots()

for i in range(1, 6):

ax.plot(x, i*x + x, label='$y={i}x + {i}$'.format(i=i))

ax.legend(loc='upper left', labelspacing=2)

plt.show()

然而,在大多数情况下,同时调整labelspacing和borderpad最有意义:import matplotlib.pyplot as plt

import numpy as np

x = np.linspace(0, 10, 100)

fig, ax = plt.subplots()

for i in range(1, 6):

ax.plot(x, i*x + x, label='$y={i}x + {i}$'.format(i=i))

ax.legend(loc='upper left', borderpad=1.5, labelspacing=1.5)

plt.show()

另一方面,如果您有非常大的标记,您可能希望使图例中显示的行的长度更大。例如,默认值可能如下所示:import matplotlib.pyplot as plt

import numpy as np

x = np.linspace(0, 10, 5)

fig, ax = plt.subplots()

for i in range(1, 6):

ax.plot(x, i*x + x, marker='o', markersize=20,

label='$y={i}x + {i}$'.format(i=i))

ax.legend(loc='upper left')

plt.show()

如果我们改变handlelength,我们将在图例中得到更长的行,这看起来更真实一些。(我还在这里调整borderpad和labelspacing以提供更多的空间。)import matplotlib.pyplot as plt

import numpy as np

x = np.linspace(0, 10, 5)

fig, ax = plt.subplots()

for i in range(1, 6):

ax.plot(x, i*x + x, marker='o', markersize=20,

label='$y={i}x + {i}$'.format(i=i))

ax.legend(loc='upper left', handlelength=5, borderpad=1.2, labelspacing=1.2)

plt.show()

在文档中,您可能还需要探索其他一些选项:Padding and spacing between various elements use following

keywords parameters. These values are measure in font-size

units. E.g., a fontsize of 10 points and a handlelength=5

implies a handlelength of 50 points. Values from rcParams

will be used if None.

=====================================================================

Keyword | Description

=====================================================================

borderpad the fractional whitespace inside the legend border

labelspacing the vertical space between the legend entries

handlelength the length of the legend handles

handletextpad the pad between the legend handle and text

borderaxespad the pad between the axes and legend border

columnspacing the spacing between columns

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,我可以给您提供一些Python Matplotlib画图中设置字体、字体大小、刻度密度、线条样式等的方法。 1. 设置字体和字体大小: 可以使用`rcParams`来设置全局字体和字体大小,也可以在特定的对象上进行设置。例如: ```python import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'Times New Roman' plt.rcParams['font.size'] = 16 # 或者使用下面的方式进行设置: fig, ax = plt.subplots() ax.set_xlabel('X Label', fontsize=16, fontfamily='Times New Roman') ax.set_ylabel('Y Label', fontsize=16, fontfamily='Times New Roman') ``` 2. 设置刻度密度: `xticks`和`yticks`可以设置刻度的位置,`xticklabels`和`yticklabels`可以设置刻度标签的内容,`tick_params`可以设置刻度的样式,例如: ```python import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 10, 100) y = np.sin(x) fig, ax = plt.subplots() ax.plot(x, y) ax.set_xticks([0, 2, 4, 6, 8, 10]) ax.set_xticklabels(['0', '2', '4', '6', '8', '10'], fontsize=12) ax.set_yticks([-1, 0, 1]) ax.set_yticklabels(['-1', '0', '1'], fontsize=12) ax.tick_params(axis='both', which='major', length=10, width=2, labelsize=12) ax.tick_params(axis='both', which='minor', length=5, width=1, labelsize=10) ``` 3. 设置线条样式: 可以使用`plot`函数中的`linestyle`参数来设置线条样式,例如: ```python import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) fig, ax = plt.subplots() ax.plot(x, y1, linestyle='-', linewidth=2, label='sin(x)') ax.plot(x, y2, linestyle='--', linewidth=2, label='cos(x)') ax.legend(loc='upper right', fontsize=12) ``` 以上是一些基本的设置方法,您可以根据具体需求进行调整

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值