Python matplotlib 画图教程:实例代码详解
25 浏览量
更新于2024-09-03
收藏 417KB PDF 举报
"这篇文章主要分享了使用Python的matplotlib库进行数据可视化的一些实例代码,包括绘制基本图形、多张图以及直方图的方法。适合初学者参考学习,以便掌握Python的数据绘图技能。"
在Python中,matplotlib是一个强大的图形库,用于生成各种静态、动态和交互式的图表。本篇文章将详细介绍如何利用matplotlib进行数据可视化。
首先,我们需要导入matplotlib库中的两个关键模块:pyplot和numpy。`pyplot`提供了一套类似MATLAB的接口,用于创建和管理图形;`numpy`则是一个用于科学计算的库,提供高效的数组操作。
```python
import matplotlib.pyplot as plt
import numpy as np
```
一个基本的线图绘制例子如下:
```python
t = np.arange(0.0, 2.0, 0.01) # 创建x轴数据,从0到2,步长0.01
s = np.sin(2 * np.pi * t) # 计算对应的y轴数据(正弦函数)
plt.plot(t, s) # 绘制线图
plt.xlabel('time (s)') # 设置x轴标签
plt.ylabel('voltage (mV)') # 设置y轴标签
plt.title('About as simple as it gets, folks') # 设置图形标题
plt.grid(True) # 开启网格线
plt.savefig("test.png") # 保存图像为PNG格式
plt.show() # 显示图像
```
若需在同一窗口中绘制多张图,可以使用`subplot()`函数来布局。比如创建一个2行1列的布局,并分别绘制两张图:
```python
x1 = np.linspace(0.0, 5.0) # 图一的x轴数据
x2 = np.linspace(0.0, 2.0) # 图二的x轴数据
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)
plt.subplot(2, 1, 1) # 选择布局中的第一个位置(从左上角顺时针计数)
plt.plot(x1, y1, 'yo-') # 绘制图一,用黄色圆点连接线
plt.title('A tale of 2 subplots')
plt.ylabel('Damped oscillation')
plt.subplot(2, 1, 2) # 选择布局中的第二个位置
plt.plot(x2, y2, 'r.-') # 绘制图二,用红色点划线
plt.xlabel('time (s)')
plt.ylabel('Undamped')
plt.show()
```
此外,matplotlib还支持绘制直方图。以下是一个简单的直方图示例,展示正态分布的数据:
```python
mu = 100 # 正态分布的均值
sigma = 15 # 标准差
data = np.random.normal(mu, sigma, 1000) # 生成1000个服从正态分布的随机数
n, bins, patches = plt.hist(data, 50, density=1, facecolor='g', alpha=0.75)
plt.xlabel('Smarts')
plt.ylabel('Probability')
plt.title('Histogram of IQ')
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
plt.axis([40, 160, 0, 0.03])
plt.grid(True)
plt.show()
```
这个例子中,我们创建了一个直方图,用以表示1000个遵循特定正态分布的随机数。通过设置`density=1`,我们得到的是概率密度,而不是计数。`facecolor`和`alpha`参数控制了柱子的颜色和透明度。
matplotlib提供了丰富的功能,使得在Python中进行数据可视化变得简单而直观。无论是简单的线图、复杂的多图布局,还是统计分析中的直方图,都能通过其灵活的API轻松实现。通过学习这些实例,你可以更好地理解matplotlib的用法,并应用于自己的数据分析项目中。
11390 浏览量
1064 浏览量
253 浏览量
636 浏览量
569 浏览量
332 浏览量
251 浏览量
1168 浏览量

weixin_38640984
- 粉丝: 5
最新资源
- 深入探讨RBAC权限管理数据库表的设计
- Netty权威指南第二版:电子书带源码的Java网络编程教程
- GBPNotify:Python编写的货币转换通知Bot
- 基于SSM框架的税务管理系统设计与实现
- 探索MySQLFront:高效操作MySQL数据库的图形化工具
- Arduino旋钮编码器库:实现旋转输入控制
- Sublime Text Python插件安装与右键集成指南
- RobotHelper: 专为Android游戏开发的自动化框架
- C#图书在线销售系统实现与实用体验
- 学生信息管理系统的开发与应用
- Shiro与SpringBoot整合实现iHRM系统认证授权
- 深入探讨JavaScript应用的开发实践
- Apropos:简化响应式图像自动化的开源工具
- WCF经典实例手册:深入理解与应用
- CKEditor与CKFinder整合:自定义文件上传及域名路径设置
- Python坦克大战游戏音乐素材包下载