'Remove legend key in matplotlib

I want to show a legend text but without a key (the rectangular box or line that appears by default).

plt.hist(x, label = 'something')

enter image description here

I don't want the box next to the legend "something". How to remove it?



Solution 1:[1]

First of all, you may decide not to create a legend at all and instead put some label in to corner of the plot.

import matplotlib.pyplot as plt
import numpy as np

x = np.random.normal(size=160)
plt.hist(x)

plt.text(0.95,0.95, 'something', ha="right", va="top", transform=plt.gca().transAxes)
plt.show()

enter image description here

If you already created the legend and want to remove it, you can do so by

plt.gca().get_legend().remove()

and then add the text instead.

If this is not an option, you may set the legend handle invisible like so:

import matplotlib.pyplot as plt
import numpy as np

x = np.random.normal(size=160)
plt.hist(x, label = 'something')

plt.legend()

leg = plt.gca().get_legend()
leg.legendHandles[0].set_visible(False)

plt.show()

enter image description here

Solution 2:[2]

Following the matplotlib docs, you can change the handlelength and handletextpad parameters to remove the handle and the space behind the label text

import matplotlib.pyplot as plt
import numpy as np

x = np.random.normal(size=160)
plt.hist(x, label = 'something')
plt.legend(handlelength=0, handletextpad=0, loc='upper right')

plt.show()

enter image description here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 ImportanceOfBeingErnest
Solution 2 Medulla Oblongata