2025-03-05
编程
00
请注意,本文编写于 54 天前,最后修改于 54 天前,其中某些信息可能已经过时。

目录

安装
基本使用示例
1. 简单的折线图
2. 柱状图
3. 散点图
4. 饼图
5. 子图
6. 多条折线图
7. 直方图
8. 热力图(Heatmap)
9. 3D 图表
10. 自定义样式
11. 保存图表

Matplotlib 是一个广泛使用的 Python 绘图库,它提供了丰富的工具来创建高质量的图表和可视化图形。无论是简单的折线图、柱状图还是复杂的热力图、3D 图表,Matplotlib 都能提供强大的支持。

安装

首先,你需要安装 matplotlib 包。可以通过 pip 来安装:

bash
pip install matplotlib

基本使用示例

以下是一些具体的示例,展示了如何使用 Matplotlib 创建各种类型的图表。

1. 简单的折线图

python
import matplotlib.pyplot as plt import numpy as np # 创建数据 x = np.linspace(0, 10, 100) y = np.sin(x) # 创建图表 plt.plot(x, y) # 添加标题和标签 plt.title('Sine Wave') plt.xlabel('X axis') plt.ylabel('Y axis') # 显示图表 plt.show()

2. 柱状图

python
import matplotlib.pyplot as plt # 创建数据 labels = ['A', 'B', 'C', 'D'] values = [4, 7, 1, 8] # 创建柱状图 plt.bar(labels, values) # 添加标题和标签 plt.title('Bar Chart Example') plt.xlabel('Categories') plt.ylabel('Values') # 显示图表 plt.show()

3. 散点图

python
import matplotlib.pyplot as plt import numpy as np # 创建数据 x = np.random.rand(50) y = np.random.rand(50) colors = np.random.rand(50) sizes = 1000 * np.random.rand(50) # 创建散点图 plt.scatter(x, y, c=colors, s=sizes, alpha=0.5) # 添加标题和标签 plt.title('Scatter Plot Example') plt.xlabel('X axis') plt.ylabel('Y axis') # 显示图表 plt.show()

4. 饼图

python
import matplotlib.pyplot as plt # 创建数据 labels = ['Frogs', 'Hogs', 'Dogs', 'Logs'] sizes = [15, 30, 45, 10] explode = (0, 0.1, 0, 0) # 突出显示第二部分 # 创建饼图 plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90) # 保证饼图为圆形 plt.axis('equal') # 添加标题 plt.title('Pie Chart Example') # 显示图表 plt.show()

5. 子图

你可以在一个窗口中创建多个子图:

python
import matplotlib.pyplot as plt import numpy as np # 创建数据 x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) # 创建包含两个子图的图表 fig, (ax1, ax2) = plt.subplots(2, 1) # 第一个子图:正弦波 ax1.plot(x, y1, color='red') ax1.set_title('Sine Wave') ax1.set_xlabel('X axis') ax1.set_ylabel('Y axis') # 第二个子图:余弦波 ax2.plot(x, y2, color='blue') ax2.set_title('Cosine Wave') ax2.set_xlabel('X axis') ax2.set_ylabel('Y axis') # 调整布局以避免重叠 plt.tight_layout() # 显示图表 plt.show()

6. 多条折线图

你可以在同一个图表上绘制多条折线:

python
import matplotlib.pyplot as plt import numpy as np # 创建数据 x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) # 创建图表并绘制两条折线 plt.plot(x, y1, label='Sine Wave', color='blue') plt.plot(x, y2, label='Cosine Wave', color='red') # 添加图例 plt.legend() # 添加标题和标签 plt.title('Multiple Line Plots') plt.xlabel('X axis') plt.ylabel('Y axis') # 显示图表 plt.show()

7. 直方图

直方图用于展示数据的分布情况:

python
import matplotlib.pyplot as plt import numpy as np # 创建数据 data = np.random.randn(1000) # 创建直方图 plt.hist(data, bins=30, alpha=0.7, color='green') # 添加标题和标签 plt.title('Histogram Example') plt.xlabel('Value') plt.ylabel('Frequency') # 显示图表 plt.show()

8. 热力图(Heatmap)

热力图是一种常用的二维数据可视化方法:

python
import matplotlib.pyplot as plt import numpy as np # 创建数据 data = np.random.rand(10, 10) # 创建热力图 plt.imshow(data, cmap='hot', interpolation='nearest') # 添加颜色条 plt.colorbar() # 添加标题 plt.title('Heatmap Example') # 显示图表 plt.show()

9. 3D 图表

Matplotlib 还支持创建三维图表:

python
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np # 创建数据 x = np.linspace(-5, 5, 100) y = np.linspace(-5, 5, 100) x, y = np.meshgrid(x, y) z = np.sin(np.sqrt(x**2 + y**2)) # 创建图表 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 绘制表面图 ax.plot_surface(x, y, z, cmap='viridis') # 添加标题和标签 ax.set_title('3D Surface Plot') ax.set_xlabel('X axis') ax.set_ylabel('Y axis') ax.set_zlabel('Z axis') # 显示图表 plt.show()

10. 自定义样式

你可以通过多种方式来自定义图表的样式:

python
import matplotlib.pyplot as plt import numpy as np # 创建数据 x = np.linspace(0, 10, 100) y = np.sin(x) # 设置绘图风格 plt.style.use('ggplot') # 创建图表 plt.plot(x, y, linestyle='--', marker='o', color='b') # 添加标题和标签 plt.title('Custom Style Example') plt.xlabel('X axis') plt.ylabel('Y axis') # 显示图表 plt.show()

11. 保存图表

你可以将生成的图表保存为图片文件:

python
import matplotlib.pyplot as plt import numpy as np # 创建数据 x = np.linspace(0, 10, 100) y = np.sin(x) # 创建图表 plt.plot(x, y) # 添加标题和标签 plt.title('Sine Wave') plt.xlabel('X axis') plt.ylabel('Y axis') # 保存图表为 PNG 文件 plt.savefig('sine_wave.png') # 显示图表 plt.show()