如何在Matplotlib中删除图例(有例子)

1,186 阅读2分钟

你可以使用下面的基本语法来从Matplotlib中的绘图中移除图例:

import matplotlib.pyplot as plt

plt.legend('', frameon=False)

引号''告诉Matplotlib在图例中不放置任何变量,frameon参数告诉Matplotlib删除图例周围的框架。

下面的例子展示了如何在实践中使用这种语法。

例子:在Matplotlib中删除图例

假设我们有如下的pandas DataFrame,它包含了各种篮球运动员的信息:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'position': ['G', 'G', 'F', 'F', 'G', 'F', 'F', 'F'],
                   'points': [5, 7, 7, 9, 12, 9, 9, 4]})

#view DataFrame
print(df)

  team position  points
0    A        G       5
1    A        G       7
2    A        F       7
3    A        F       9
4    B        G      12
5    B        F       9
6    B        F       9
7    B        F       4

我们可以使用下面的代码来创建一个堆叠的柱状图,以可视化每个球队和每个位置的球员的总得分:

import matplotlib.pyplot as plt

#create stacked bar chart
df.groupby(['team', 'position']).size().unstack().plot(kind='bar', stacked=True)

注意,Matplotlib默认在右上角放置一个图例。

要创建这个没有图例的相同图表,我们可以使用下面的代码:

import matplotlib.pyplot as plt

#create stacked bar chart
df.groupby(['team', 'position']).size().unstack().plot(kind='bar', stacked=True)

#remove legend
plt.legend('', frameon=False)

remove legend in Matplotlib

这个叠加条形图与之前的图表相匹配,但图例已经被删除。

还要注意的是,我们可以使用同样的语法从Matplotlib的任何图中删除图例。

例如,下面的代码显示了如何在Matplotlib中创建一个饼图并删除图例:

import matplotlib.pyplot as plt

#create pie chart that shows total points scored by team
df.groupby(['team']).sum().plot(kind='pie', y='points')

#remove legend
plt.legend('', frameon=False)

其结果是一个没有图例的饼图。

其他资源

下面的教程解释了如何在Matplotlib中执行其他常见任务:

如何从Matplotlib图中删除刻度线
如何改变Matplotlib图的字体大小
如何在Matplotlib中为图添加平均线