Matplotlib 如何使用Matplotlib和pandas来在柱状图列上方注释标签

Matplotlib 如何使用Matplotlib和pandas来在柱状图列上方注释标签

在数据可视化方面,Matplotlib和pandas是最常用的库之一。其中,Matplotlib提供了一种灵活的方式绘制各种类型的图表,而pandas则提供了许多方便的功能来处理数据。在本篇文章中,我将介绍如何使用Matplotlib和pandas来在柱状图列上方注释标签。

阅读更多:Matplotlib 教程

实现注释标签

在使用Matplotlib绘制柱状图时,我们可以使用bar函数。该函数接受两个关键字参数,分别为位置和高度。例如,我们可以使用以下代码生成一个简单的柱状图:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 30, 40, 50]

plt.bar(x, y)
plt.show()
Python

该代码会生成一个简单的柱状图,其中x轴上的标签为字母A到E,y轴上的标签为整数10到50。现在,我们想在每个柱形上标注它的值。

我们可以使用Matplotlib的text函数在某个位置添加文本。例如,我们可以使用以下代码在柱形上方添加标签:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 30, 40, 50]

plt.bar(x, y)
for i in range(len(x)):
    plt.text(x[i], y[i]+1, str(y[i]), ha='center', va='bottom')

plt.show()
Python

该代码将在每个柱形上方添加标签。text函数需要三个参数:x坐标、y坐标和文本。我们使用ha='center', va='bottom'参数使文本居中对齐并放到柱形上方。

自定义注释标签的颜色和字体

有时需要使标签在柱形上脱颖而出,或者使其颜色更加醒目。在Matplotlib中,我们可以使用color参数来自定义标签的颜色。例如,以下代码将标签颜色设置为红色:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 30, 40, 50]

plt.bar(x, y)
for i in range(len(x)):
    plt.text(x[i], y[i]+1, str(y[i]), ha='center', va='bottom', color='r')

plt.show()
Python

在Matplotlib中,我们还可以使用fontdict参数来自定义标签的字体。例如,以下代码将标签字体设置为Arial,大小为14:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 30, 40, 50]

plt.bar(x, y)
for i in range(len(x)):
    plt.text(x[i], y[i]+1, str(y[i]), ha='center', va='bottom', fontdict={'fontname': 'Arial', 'size': 14})

plt.show()
Python

我们可以看到,标签现在变为了Arial字体,大小为14:

将注释标签添加到堆叠柱状图中

我们可以使用Matplotlib的bar函数创建堆叠柱状图。例如,以下代码创建了一个堆叠柱状图,其中每个柱子由三部分组成:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y1 = [10, 20, 30, 40, 50]
y2 =[5, 10, 15, 20, 25]
y3 = [25, 30, 35, 40, 45]

plt.bar(x, y1, label='y1')
plt.bar(x, y2, bottom=y1, label='y2')
plt.bar(x, y3, bottom=[i+j for i, j in zip(y1, y2)], label='y3')
plt.legend()

plt.show()
Python

该代码将创建一个三个柱形组成的堆叠柱状图

像以前一样,在每个柱子上方添加标签:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y1 = [10, 20, 30, 40, 50]
y2 = [5, 10, 15, 20, 25]
y3 = [25, 30, 35, 40, 45]

plt.bar(x, y1, label='y1')
plt.bar(x, y2, bottom=y1, label='y2')
plt.bar(x, y3, bottom=[i+j for i, j in zip(y1, y2)], label='y3')

for i in range(len(x)):
    plt.text(x[i], y1[i]+y2[i]+y3[i]+1, str(y1[i]+y2[i]+y3[i]), ha='center', va='bottom')

plt.legend()
plt.show()
Python

我们现在可以看到每个柱形上方的标签。由于这是堆叠柱状图,因此我们需要计算每个柱形的高度,并相应地将标签添加到正确的位置。

在子绘图中添加注释标签

有时候我们需要在同一图中绘制多个子图,并在每个子图中添加标签。在Matplotlib中,我们可以使用subplot函数创建子图。例如,以下代码将在同一图表中创建两个子图:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y1 = [10, 20, 30, 40, 50]
y2 = [5, 10, 15, 20, 25]

fig, ax = plt.subplots(1, 2, figsize=(10, 5))

ax[0].bar(x, y1)
ax[0].set_title('y1')

ax[1].bar(x, y2)
ax[1].set_title('y2')

plt.show()
Python

该代码将创建一幅具有两个子图的图表

现在,我们想在每个子绘图中添加标签。我们可以使用以下代码在图形左侧添加标签:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y1 = [10, 20, 30, 40, 50]
y2 = [5, 10, 15, 20, 25]

fig, ax = plt.subplots(1, 2, figsize=(10, 5))

ax[0].bar(x, y1)
ax[0].set_title('y1')
for i in range(len(x)):
    ax[0].text(-0.15, i, str(y1[i]), ha='center', va='center')

ax[1].bar(x, y2)
ax[1].set_title('y2')
for i in range(len(x)):
    ax[1].text(-0.15, i, str(y2[i]), ha='center', va='center')

plt.show()
Python

总结

在本篇文章中,我们已经学习了如何使用Matplotlib和pandas来在柱状图列上方注释标签。我们已经看到,我们可以使用text函数添加标签,并使用colorfontdict参数自定义标签的颜色和字体。我们也学习了如何在堆叠柱状图和子图中添加标签。

注释标签是一种有用的数据可视化技术,可以帮助读者更好地理解和分析数据。使用Matplotlib和pandas,可以很容易地在柱状图列上方添加标签,并根据需要自定义它们的样式和位置。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册