Python Matplotlib 教程-Matplotlib 如何绘制常见图表
Python Matplotlib 如何绘制常见图表
Matplotlib 是 Python 中最流行的数据可视化库之一,提供了多种方式绘制各种图表,如折线图、柱状图、散点图、饼图等。本篇文章将从基础入门开始,逐步介绍如何使用 Matplotlib 绘制这些常见图表,帮助新手快速掌握 Matplotlib 的核心功能。
目录
- 折线图
- 柱状图
- 散点图
- 饼图
- 直方图
- 箱线图
- 面积图
- 热力图
- 总结与建议
折线图
折线图是最常见的图表类型之一,通常用于显示随时间变化的数据趋势。
基本折线图
import matplotlib.pyplot as plt
# 数据
x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]
# 绘制折线图
plt.plot(x, y, marker='o', linestyle='-', color='blue', label='数据趋势')
plt.title('折线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend()
plt.grid()
plt.show()
多条折线图
x = [1, 2, 3, 4, 5]
y1 = [10, 15, 20, 25, 30]
y2 = [5, 10, 15, 20, 25]
plt.plot(x, y1, marker='o', label='数据1', color='blue')
plt.plot(x, y2, marker='s', label='数据2', color='green')
plt.title('多条折线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend()
plt.grid()
plt.show()
柱状图
柱状图常用于比较多个类别的数据大小。
垂直柱状图
categories = ['A', 'B', 'C', 'D']
values = [10, 20, 15, 25]
plt.bar(categories, values, color='skyblue')
plt.title('垂直柱状图')
plt.xlabel('类别')
plt.ylabel('值')
plt.grid(axis='y')
plt.show()
水平柱状图
plt.barh(categories, values, color='lightgreen')
plt.title('水平柱状图')
plt.xlabel('值')
plt.ylabel('类别')
plt.grid(axis='x')
plt.show()
分组柱状图
import numpy as np
categories = ['A', 'B', 'C', 'D']
values1 = [10, 20, 15, 25]
values2 = [12, 18, 20, 22]
x = np.arange(len(categories))
plt.bar(x - 0.2, values1, width=0.4, label='组1', color='blue')
plt.bar(x + 0.2, values2, width=0.4, label='组2', color='orange')
plt.xticks(x, categories)
plt.title('分组柱状图')
plt.xlabel('类别')
plt.ylabel('值')
plt.legend()
plt.show()
散点图
散点图用于展示数据点在二维平面上的分布情况。
基本散点图
x = [5, 7, 8, 7, 2, 17, 2, 9, 4, 11]
y = [99, 86, 87, 88, 100, 86, 103, 87, 94, 78]
plt.scatter(x, y, color='purple')
plt.title('散点图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.grid()
plt.show()
带大小和颜色的散点图
sizes = [20, 50, 100, 200, 300, 400, 500, 800, 1000, 1200]
colors = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
plt.scatter(x, y, s=sizes, c=colors, cmap='viridis', alpha=0.7)
plt.colorbar(label='颜色值')
plt.title('带大小和颜色的散点图')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.grid()
plt.show()
饼图
饼图用于展示数据在整体中的占比。
基本饼图
labels = ['A', 'B', 'C', 'D']
sizes = [25, 35, 20, 20]
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
plt.title('饼图示例')
plt.show()
带分离效果的饼图
explode = [0.1, 0, 0, 0] # 仅分离第一个部分
plt.pie(sizes, labels=labels, autopct='%1.1f%%', explode=explode, startangle=90, shadow=True)
plt.title('带分离效果的饼图')
plt.show()
直方图
直方图用于展示数据分布的频率。
基本直方图
data = [7, 8, 5, 3, 10, 7, 8, 9, 6, 5, 5, 6, 8, 8, 9]
plt.hist(data, bins=5, color='lightblue', edgecolor='black')
plt.title('直方图示例')
plt.xlabel('区间')
plt.ylabel('频率')
plt.show()
箱线图
箱线图(盒须图)用于展示数据的分布特征,包括中位数、四分位数和异常值。
data = [7, 8, 5, 3, 10, 7, 8, 9, 6, 5, 5, 6, 8, 8, 9]
plt.boxplot(data, patch_artist=True, boxprops=dict(facecolor='lightblue'))
plt.title('箱线图示例')
plt.ylabel('值')
plt.show()
面积图
面积图适合用来显示累积趋势。
x = [1, 2, 3, 4, 5]
y1 = [10, 20, 30, 40, 50]
y2 = [5, 15, 25, 35, 45]
plt.fill_between(x, y1, color='skyblue', alpha=0.5, label='数据1')
plt.fill_between(x, y2, color='orange', alpha=0.5, label='数据2')
plt.title('面积图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.legend()
plt.show()
热力图
热力图用于展示数据的强度分布。
import numpy as np
data = np.random.rand(5, 5)
plt.imshow(data, cmap='viridis', interpolation='nearest')
plt.colorbar(label='强度值')
plt.title('热力图示例')
plt.show()
总结与建议
通过本篇文章,你学习了使用 Matplotlib 绘制折线图、柱状图、散点图、饼图、直方图、箱线图、面积图和热力图的基础方法。以下是几点建议:
- 理解数据特点:根据数据的特点选择合适的图表类型。
- 丰富图表细节:通过自定义颜色、标记和标签,提升图表的表达力。
- 实践与尝试:尝试结合多种图表绘制,解决实际问题。
现在就打开你的代码编辑器,开始尝试用 Matplotlib 绘制图表吧!