Matplotlib 柱状图详解
Matplotlib 是一个用于在 Python 中创建数据可视化的库。它提供了一个非常强大的接口来绘制各种图表,包括但不限于线图、散点图、柱状图等。本文将重点介绍如何使用 Matplotlib 绘制柱状图,包括基本柱状图、堆叠柱状图、分组柱状图等,并提供详细的示例代码。
基本柱状图
柱状图是数据可视化中最常见的图表类型之一,它通过柱子的高度来表示数据的大小。下面是一个基本柱状图的示例代码:
import matplotlib.pyplot as plt
data = [23, 45, 56, 78, 33]
labels = ['A', 'B', 'C', 'D', 'E']
plt.bar(labels, data, color='blue', label='Demo Data')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Basic Bar Graph - how2matplotlib.com')
plt.legend()
plt.show()
Output:
水平柱状图
除了传统的垂直柱状图,Matplotlib 也支持绘制水平柱状图。下面是一个水平柱状图的示例代码:
import matplotlib.pyplot as plt
data = [23, 45, 56, 78, 33]
labels = ['A', 'B', 'C', 'D', 'E']
plt.barh(labels, data, color='green', label='Demo Data')
plt.ylabel('Categories')
plt.xlabel('Values')
plt.title('Horizontal Bar Graph - how2matplotlib.com')
plt.legend()
plt.show()
Output:
堆叠柱状图
堆叠柱状图可以显示多个数据系列的组合,下面是一个堆叠柱状图的示例代码:
import matplotlib.pyplot as plt
labels = ['A', 'B', 'C', 'D', 'E']
data1 = [23, 45, 56, 78, 33]
data2 = [17, 22, 19, 18, 29]
plt.bar(labels, data1, color='blue', label='Data 1')
plt.bar(labels, data2, bottom=data1, color='red', label='Data 2')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Stacked Bar Graph - how2matplotlib.com')
plt.legend()
plt.show()
Output:
分组柱状图
分组柱状图可以在同一个图表中并排显示多个数据系列,下面是一个分组柱状图的示例代码:
import matplotlib.pyplot as plt
import numpy as np
labels = ['A', 'B', 'C', 'D', 'E']
data1 = [23, 45, 56, 78, 33]
data2 = [17, 22, 19, 18, 29]
x = np.arange(len(labels)) # 标签位置
width = 0.35 # 柱状图的宽度
plt.bar(x - width/2, data1, width, color='blue', label='Data 1')
plt.bar(x + width/2, data2, width, color='red', label='Data 2')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Grouped Bar Graph - how2matplotlib.com')
plt.xticks(x, labels)
plt.legend()
plt.show()
Output:
自定义柱状图样式
Matplotlib 允许自定义柱状图的样式,包括颜色、边框、透明度等。下面是一个自定义样式的柱状图示例代码:
import matplotlib.pyplot as plt
data = [23, 45, 56, 78, 33]
labels = ['A', 'B', 'C', 'D', 'E']
plt.bar(labels, data, color='skyblue', edgecolor='black', linewidth=1.5, alpha=0.7, label='Demo Data')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Custom Style Bar Graph - how2matplotlib.com')
plt.legend()
plt.show()
Output:
添加文本标签
在柱状图的每个柱子上添加文本标签可以更直观地显示数据值,下面是一个添加文本标签的柱状图示例代码:
import matplotlib.pyplot as plt
data = [23, 45, 56, 78, 33]
labels = ['A', 'B', 'C', 'D', 'E']
plt.bar(labels, data, color='purple', label='Demo Data')
for i, value in enumerate(data):
plt.text(i, value + 1, str(value), ha='center')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Bar Graph with Labels - how2matplotlib.com')
plt.legend()
plt.show()
Output:
多系列柱状图
在同一个图表中绘制多个数据系列的柱状图,可以更好地比较不同系列之间的数据。下面是一个多系列柱状图的示例代码:
import matplotlib.pyplot as plt
data1 = [23, 45, 56, 78, 33]
data2 = [17, 22, 19, 18, 29]
labels = ['A', 'B', 'C', 'D', 'E']
plt.bar(labels, data1, color='blue', width=0.4, label='Data 1')
plt.bar(labels, data2, color='red', width=0.4, bottom=data1, label='Data 2')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Multiple Series Bar Graph - how2matplotlib.com')
plt.legend()
plt.show()
Output:
结论
Matplotlib 提供了强大的柱状图绘制功能,通过上述示例代码,我们可以看到绘制基本柱状图、水平柱状图、堆叠柱状图、分组柱状图以及自定义样式柱状图等都是非常直观和简单的。通过合理利用柱状图,可以有效地展示和比较数据,为数据分析和决策提供支持。