Python Matplotlib 教程-Matplotlib 如何绘制常见图表

Python Matplotlib 如何绘制常见图表

Matplotlib 是 Python 中最流行的数据可视化库之一,提供了多种方式绘制各种图表,如折线图、柱状图、散点图、饼图等。本篇文章将从基础入门开始,逐步介绍如何使用 Matplotlib 绘制这些常见图表,帮助新手快速掌握 Matplotlib 的核心功能。

目录


折线图

折线图是最常见的图表类型之一,通常用于显示随时间变化的数据趋势。

基本折线图

python 复制代码
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()

多条折线图

python 复制代码
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()

柱状图

柱状图常用于比较多个类别的数据大小。

垂直柱状图

python 复制代码
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()

水平柱状图

python 复制代码
plt.barh(categories, values, color='lightgreen')
plt.title('水平柱状图')
plt.xlabel('值')
plt.ylabel('类别')
plt.grid(axis='x')
plt.show()

分组柱状图

python 复制代码
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()

散点图

散点图用于展示数据点在二维平面上的分布情况。

基本散点图

python 复制代码
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()

带大小和颜色的散点图

python 复制代码
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()

饼图

饼图用于展示数据在整体中的占比。

基本饼图

python 复制代码
labels = ['A', 'B', 'C', 'D']
sizes = [25, 35, 20, 20]

plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
plt.title('饼图示例')
plt.show()

带分离效果的饼图

python 复制代码
explode = [0.1, 0, 0, 0]  # 仅分离第一个部分

plt.pie(sizes, labels=labels, autopct='%1.1f%%', explode=explode, startangle=90, shadow=True)
plt.title('带分离效果的饼图')
plt.show()

直方图

直方图用于展示数据分布的频率。

基本直方图

python 复制代码
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()

箱线图

箱线图(盒须图)用于展示数据的分布特征,包括中位数、四分位数和异常值。

python 复制代码
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()

面积图

面积图适合用来显示累积趋势。

python 复制代码
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()

热力图

热力图用于展示数据的强度分布。

python 复制代码
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 绘制折线图、柱状图、散点图、饼图、直方图、箱线图、面积图和热力图的基础方法。以下是几点建议:

  1. 理解数据特点:根据数据的特点选择合适的图表类型。
  2. 丰富图表细节:通过自定义颜色、标记和标签,提升图表的表达力。
  3. 实践与尝试:尝试结合多种图表绘制,解决实际问题。

现在就打开你的代码编辑器,开始尝试用 Matplotlib 绘制图表吧!

相关推荐
Eiceblue15 分钟前
Python在Excel工作表中创建数据透视表
开发语言·python·visualstudio·excel
2401_8582861133 分钟前
124.【C语言】数据结构之快速排序的小区间优化和非递归的解决方法
c语言·开发语言·数据结构·算法·排序算法·
Spcarrydoinb38 分钟前
python学习笔记—17—数据容器之字符串
笔记·python·学习
编程小筑38 分钟前
TypeScript语言的网络编程
开发语言·后端·golang
老大白菜40 分钟前
第6章:Go语言并发编程
开发语言·后端·golang
KeyPan43 分钟前
【机器学习:十三、PyTorch简介及实现】
人工智能·pytorch·python·深度学习·神经网络·机器学习·计算机视觉
黑果果的思考1 小时前
C++例程:使用I/O模拟IIC接口(6)
开发语言·c++
西猫雷婶1 小时前
python学opencv|读取图像(三十)使用cv2.getAffineTransform()函数倾斜拉伸图像
开发语言·python·opencv
编程|诗人1 小时前
Erlang语言的学习路线
开发语言·后端·golang
weixin_466202781 小时前
第37周:咖啡豆识别 (Tensorflow实战第七周)
人工智能·python·tensorflow