41

I want to adjust space between legend markers and labels. Sometime the space is too much as default. Does anyone know how to do this?

Thanks.

Trenton McKinney
  • 56,955
  • 33
  • 144
  • 158
rhtica
  • 545
  • 1
  • 5
  • 5

1 Answers1

68

legend() has a kwarg in called handletextpad which will do what you are looking for. By default, this is set to 0.8. From the docs:

handletextpad : float or None

The pad between the legend handle and text. Measured in font-size units.

Default is None which will take the value from the legend.handletextpad rcParam.

So when you call legend, add that kwarg, and experiment with the value. Something like:

ax.legend(handletextpad=0.1)

Consider the following:

import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(ncols=2)

ax1.plot(range(5), 'ro', label='handletextpad=0.8')
ax2.plot(range(5), 'bo', label='handletextpad=0.1')

ax1.legend()
ax2.legend(handletextpad=0.1)

plt.show()

enter image description here

tmdavison
  • 64,360
  • 12
  • 187
  • 165