Matplotlib 柱状图详解

Matplotlib 柱状图详解

参考:matplotlib bar graphs

在数据可视化领域,柱状图是一种常用的图表类型,它通过柱子的高度差异来展示不同类别的数值对比。MatplotlibPython 中一个广泛使用的绘图库,它提供了丰富的接口来创建包括柱状图在内的各种图表。本文将详细介绍如何使用 Matplotlib 绘制柱状图,并通过10个示例代码展示不同的柱状图绘制技巧。

基础柱状图

首先,我们从最基础的单一柱状图绘制开始。以下是一个简单的示例代码,展示了如何绘制一个基础的柱状图。

import matplotlib.pyplot as plt

# 数据
categories = ['Category A', 'Category B', 'Category C']
values = [23, 45, 56]

plt.bar(categories, values)
plt.title('Basic Bar Graph - how2matplotlib.com')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.show()

Output:

Matplotlib 柱状图详解

水平柱状图

有时候,为了更好地展示某些数据或者优化空间利用,我们可能会需要绘制水平柱状图。以下示例代码展示了如何绘制一个简单的水平柱状图。

import matplotlib.pyplot as plt

# 数据
categories = ['Category A', 'Category B', 'Category C']
values = [23, 45, 56]

plt.barh(categories, values, color='skyblue')
plt.title('Horizontal Bar Graph - how2matplotlib.com')
plt.xlabel('Values')
plt.ylabel('Categories')
plt.show()

Output:

Matplotlib 柱状图详解

堆叠柱状图

堆叠柱状图可以展示不同类别在某个共同维度上的数值分布,并且通过堆叠的方式展示总量。以下示例代码展示了如何绘制一个堆叠柱状图。

import matplotlib.pyplot as plt

# 数据
categories = ['Category A', 'Category B', 'Category C']
values1 = [23, 45, 56]
values2 = [15, 22, 33]

plt.bar(categories, values1, label='Group 1')
plt.bar(categories, values2, bottom=values1, label='Group 2')
plt.title('Stacked Bar Graph - how2matplotlib.com')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.legend()
plt.show()

Output:

Matplotlib 柱状图详解

分组柱状图

当我们需要在同一类别中比较不同组的数据时,分组柱状图是一个很好的选择。以下示例代码展示了如何绘制一个分组柱状图。

import numpy as np
import matplotlib.pyplot as plt

# 数据
categories = ['Category A', 'Category B', 'Category C']
values1 = [23, 45, 56]
values2 = [17, 43, 47]

x = np.arange(len(categories))  # 标签位置
width = 0.35  # 柱状图的宽度

plt.bar(x - width/2, values1, width, label='Group 1')
plt.bar(x + width/2, values2, width, label='Group 2')

plt.xticks(x, categories)
plt.title('Grouped Bar Graph - how2matplotlib.com')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.legend()
plt.show()

Output:

Matplotlib 柱状图详解

带误差线的柱状图

在某些情况下,我们需要在柱状图上显示数据的变异范围或误差,以下示例代码展示了如何绘制带误差线的柱状图。

import matplotlib.pyplot as plt

# 数据
categories = ['Category A', 'Category B', 'Category C']
values = [23, 45, 56]
errors = [2, 3, 4]

plt.bar(categories, values, yerr=errors, capsize=5, color='lightgreen')
plt.title('Bar Graph with Error Bars - how2matplotlib.com')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.show()

Output:

Matplotlib 柱状图详解

自定义柱状图颜色

Matplotlib 允许我们自定义柱状图的颜色,以达到更好的视觉效果或符合特定主题。以下示例代码展示了如何自定义柱状图的颜色。

import matplotlib.pyplot as plt

# 数据
categories = ['Category A', 'Category B', 'Category C']
values = [23, 45, 56]

colors = ['red', 'green', 'blue']

plt.bar(categories, values, color=colors)
plt.title('Bar Graph with Custom Colors - how2matplotlib.com')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.show()

Output:

Matplotlib 柱状图详解

添加文本标签

为了使柱状图更加信息丰富,我们可以在每个柱子上添加文本标签来显示具体的数值。以下示例代码展示了如何在柱状图上添加文本标签。

import matplotlib.pyplot as plt

# 数据
categories = ['Category A', 'Category B', 'Category C']
values = [23, 45, 56]

plt.bar(categories, values, color='purple')

# 在柱子上添加文本标签
for i, value in enumerate(values):
    plt.text(i, value + 1, str(value), ha='center')

plt.title('Bar Graph with Text Labels - how2matplotlib.com')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.show()

Output:

Matplotlib 柱状图详解

多系列柱状图

在某些情况下,我们可能需要在同一图表中展示多个系列的数据。以下示例代码展示了如何绘制多系列柱状图。

import matplotlib.pyplot as plt
import numpy as np

# 数据
categories = ['Category A', 'Category B', 'Category C']
values1 = [23, 45, 56]
values2 = [17, 43, 47]
values3 = [25, 30, 45]

x = np.arange(len(categories))  # 标签位置
width = 0.2  # 柱状图的宽度

plt.bar(x - width, values1, width, label='Series 1')
plt.bar(x, values2, width, label='Series 2')
plt.bar(x + width, values3, width, label='Series 3')

plt.xticks(x, categories)
plt.title('Multi-Series Bar Graph - how2matplotlib.com')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.legend()
plt.show()

Output:

Matplotlib 柱状图详解

结论

Matplotlib 提供了强大而灵活的工具来绘制各种柱状图,从基础柱状图到复杂的多系列柱状图,都可以通过简单的代码实现。通过本文的介绍和示例代码,相信你已经掌握了使用 Matplotlib 绘制柱状图的基本方法和一些高级技巧。实践是学习的最好方式,不妨尝试着用 Matplotlib 绘制出自己的数据柱状图吧。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程