📜  如何删除 Matplotlib 中的图例?

📅  最后修改于: 2022-05-13 01:55:34.821000             🧑  作者: Mango

如何删除 Matplotlib 中的图例?

MatplotlibPython中最流行的数据可视化库之一。使用这个matplotlib 库,如果我们想要可视化多个变量,我们可能想要解释每个变量代表什么。为此,matplotlib 库中有一个名为legend()的函数。这个图例是图表上的一个小区域,描述了每个变量代表什么。

为了去除图例,有四种方法。他们是 :

  • 使用 .remove()
  • 使用 .set_visible()
  • 修复所需 Axes 对象的 legend_ 属性 = 无
  • 使用 label=_nolegend_  

方法 1:使用.remove()

示例 1:通过使用ax.get_legend().remove()方法,可以从 matplotlib 中的图形中删除图例。

Python3
import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3, 3, 100)
y1 = np.power(x, 2)
y2 = np.power(x, 3)
 
fig, ax = plt.subplots()
 
ax.plot(x, y1, c = 'r',label = 'x^2')
ax.plot(x, y2, c = 'g',label = 'x^3')
 
leg = plt.legend()
 
ax.get_legend().remove()
 
plt.show()


Python3
import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3, 3, 100)
y1 = np.power(x, 2)
y2 = np.power(x, 3)
 
fig, axs = plt.subplots(2, 1)
 
axs[0].plot(x, y1, c = 'r',label = 'x^2')
axs[1].plot(x, y2, c = 'g',label = 'x^3')
 
axs[0].legend(loc = 'upper left')
axs[1].legend(loc = 'upper left')
 
axs[1].get_legend().remove()
 
 
plt.show()


Python3
import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3, 3, 1000)
y1 = np.sin(x)
y2 = np.cos(x)
 
fig, ax = plt.subplots()
 
ax.plot(x, y1,c = 'r',label = 'Sine')
ax.plot(x, y2,c = 'g',label = 'Cosine')
 
leg = plt.legend()
 
ax.get_legend().set_visible(False)
 
plt.show()


Python3
import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3,3,1000)
y1 = np.sin(x)
y2 = np.cos(x)
 
fig, axs = plt.subplots(2,1)
 
axs[0].plot(x,y1,c='r',label = 'Sine')
axs[1].plot(x,y2,c='g',label = 'Cosine')
 
axs[0].legend(loc='upper left')
axs[1].legend(loc='upper left')
 
axs[1].get_legend().set_visible(False)
 
 
plt.show()


Python3
import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3, 3, 1000)
y1 = np.sin(x)
y2 = np.cos(x)
 
fig, ax = plt.subplots()
 
ax.plot(x, y1,c = 'r',label = 'Sine')
ax.plot(x, y2,c = 'g',label = 'Cosine')
leg = plt.legend()
ax.legend_ = None
 
plt.show()


Python3
import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3, 3, 1000)
y1 = np.sin(x)
y2 = np.cos(x)
 
fig, axs = plt.subplots(2, 1)
 
axs[0].plot(x, y1, c = 'r',label = 'Sine')
axs[1].plot(x, y2,c = 'g',label = 'Cosine')
axs[0].legend(loc = 'upper left')
axs[1].legend(loc = 'upper left')
axs[0].legend_ = None
 
plt.show()


Python3
import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3, 3, 100)
y1 = np.power(x, 2)
y2 = np.power(x, 3)
 
fig, ax = plt.subplots()
 
ax.plot(x, y1, c = 'r',label = '_nolegend_')
ax.plot(x, y2,c = 'g',label = '_nolegend_')
 
leg = plt.legend()
 
plt.show()


Python3
import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3,3,100)
y1 = np.power(x,2)
y2 = np.power(x,3)
 
fig, axs = plt.subplots(2,1)
 
axs[0].plot(x,y1,c='r',label = '_nolegend_')
axs[1].plot(x,y2,c='g',label = 'x^3')
 
axs[0].legend(loc='upper left')
axs[1].legend(loc='upper left')
 
 
plt.show()



输出 :

我们可以看到上图中没有图例。

示例 2:多个子图:

在有多个子图的情况下,我们可以提及需要删除图例的子图对象。在这里,我们编写了 axs[1].get_legend().remove()这意味着我们正在专门删除第二个子图的图例。

蟒蛇3

import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3, 3, 100)
y1 = np.power(x, 2)
y2 = np.power(x, 3)
 
fig, axs = plt.subplots(2, 1)
 
axs[0].plot(x, y1, c = 'r',label = 'x^2')
axs[1].plot(x, y2, c = 'g',label = 'x^3')
 
axs[0].legend(loc = 'upper left')
axs[1].legend(loc = 'upper left')
 
axs[1].get_legend().remove()
 
 
plt.show()


输出 :

在上图中,我们专门删除了第二个子图的图例。第一个子情节仍然会有一个图例。

方法 2:使用set_visible()

示例 1:通过使用ax.get_legend().set_visible(False)方法,可以从 matplotlib 中的图形中删除图例。

蟒蛇3

import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3, 3, 1000)
y1 = np.sin(x)
y2 = np.cos(x)
 
fig, ax = plt.subplots()
 
ax.plot(x, y1,c = 'r',label = 'Sine')
ax.plot(x, y2,c = 'g',label = 'Cosine')
 
leg = plt.legend()
 
ax.get_legend().set_visible(False)
 
plt.show()


输出 :

我们可以看到上图中没有图例。

示例-2。不止一个子图:

如果有多个子图,我们可以提及需要删除图例的子图对象。在这里,我们编写了 axs[1].get_legend().set_visible(False) ,这意味着我们要专门删除第二个子图的图例。

蟒蛇3

import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3,3,1000)
y1 = np.sin(x)
y2 = np.cos(x)
 
fig, axs = plt.subplots(2,1)
 
axs[0].plot(x,y1,c='r',label = 'Sine')
axs[1].plot(x,y2,c='g',label = 'Cosine')
 
axs[0].legend(loc='upper left')
axs[1].legend(loc='upper left')
 
axs[1].get_legend().set_visible(False)
 
 
plt.show()

输出 :

在上图中,我们专门删除了第二个子图的图例。第一个子情节仍然会有图例。

方法 3:修复所需 Axes 对象的 legend_ 属性 = None :

示例 1:通过使用ax.legend_ = None ,可以从 matplotlib 中的图形中删除图例。

蟒蛇3

import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3, 3, 1000)
y1 = np.sin(x)
y2 = np.cos(x)
 
fig, ax = plt.subplots()
 
ax.plot(x, y1,c = 'r',label = 'Sine')
ax.plot(x, y2,c = 'g',label = 'Cosine')
leg = plt.legend()
ax.legend_ = None
 
plt.show()

输出:

我们可以看到上图中没有图例。

示例 2:多个子图:

在有多个子图的情况下,我们可以提及要删除图例的所需子图对象。在这里,我们写了 axs[0].legend_ = None这意味着我们要专门删除第一个子图的图例。the

蟒蛇3

import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3, 3, 1000)
y1 = np.sin(x)
y2 = np.cos(x)
 
fig, axs = plt.subplots(2, 1)
 
axs[0].plot(x, y1, c = 'r',label = 'Sine')
axs[1].plot(x, y2,c = 'g',label = 'Cosine')
axs[0].legend(loc = 'upper left')
axs[1].legend(loc = 'upper left')
axs[0].legend_ = None
 
plt.show()

输出:

在上图中,我们专门删除了第一个子图的图例。第二个子情节仍然会有图例。

方法四:使用label = _legend_

示例 1:通过在 ax.plot() 中发送label = '_nolegend_'参数,可以从 matplotlib 中的图形中删除图例。

蟒蛇3

import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3, 3, 100)
y1 = np.power(x, 2)
y2 = np.power(x, 3)
 
fig, ax = plt.subplots()
 
ax.plot(x, y1, c = 'r',label = '_nolegend_')
ax.plot(x, y2,c = 'g',label = '_nolegend_')
 
leg = plt.legend()
 
plt.show()


输出:

示例-2。不止一个子图:

如果有多个子图,我们可以提及需要删除图例的子图对象。在这里,我们写了 axs[0].plot(x,y1,c='r',label = '_nolegend_')这意味着我们要专门删除第一个子图的图例。

蟒蛇3

import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace(-3,3,100)
y1 = np.power(x,2)
y2 = np.power(x,3)
 
fig, axs = plt.subplots(2,1)
 
axs[0].plot(x,y1,c='r',label = '_nolegend_')
axs[1].plot(x,y2,c='g',label = 'x^3')
 
axs[0].legend(loc='upper left')
axs[1].legend(loc='upper left')
 
 
plt.show()

输出 :

在上图中,我们专门删除了第一个子图的图例。第二个子情节仍然会有图例。