第一章 Matplotlib基础
文章目录
- Matplotlib使用指南-1
- 一、Matplotlib是什么?
- 二、具体内容
- 1.基础绘图例子
- 2.Figure的组成
- 3.两种绘图接口
- 第一种:OO模式
- 第二种绘图模式
- 4.通用绘图模板
- 5.思考
Matplotlib是一个Python 2D绘图库,能够以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形,用来绘制各种静态,动态,交互式的图表。
Matplotlib可用于Python脚本,Python和IPython Shell、Jupyter notebook,Web应用程序服务器和各种图形用户界面工具包等。
Matplotlib是Python数据可视化库中的泰斗,它已经成为python中公认的数据可视化工具,我们所熟知的pandas和seaborn的绘图接口其实也是基于matplotlib所作的高级封装
二、具体内容 1.基础绘图例子代码如下(示例):
```python
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
fig,ax = plt.subplots()# 创建一个包含一个axes的figure
ax.plot([1,2,3,4],[1,4,2,3])# 绘制图像
也可以简化为:
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
包含四个部分:
Figure:顶层级,用来容纳所有绘图元素
Axes:核心,容纳大量元素用来构造一幅幅子图,一个图可以由一个活动多个子图组成
Axis:axes的下级,处理坐标轴,网格
Tick:axis的下级别,处理刻度
object-oriented style
显式创建figure和axes
依赖pyplot自动创建figure和axes并绘图
x = np.linspace(0,2,100) #均匀的返回0到2之间的的数据,生成的样本数量为100
fig, ax =plt.subplots()
ax.plot(x,x,label= 'linear')
ax.plot(x,x**2,label='qiadratic') #2**2=4
ax.plot(x,x**3,label='cubic') #2**3=8
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title("Simple Plot")
ax.legend()
第二种绘图模式
而如果采用第二种绘图接口,绘制同样的图,代码是这样的
x= np.linspace(0,2,100)
plt.plot(x,x, label='linear')
plt.plot(x,x**2,label='quadratic')
plt.plot(x,x**3,label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
4.通用绘图模板
#step1 准备数据
x = np.linspace(0,2,100)
y= x**2
#step2 设置绘图样式
mpl.rc('lines',linewidth=4,linestyle='-.')
#step3 定义布局
fig,ax = plt.subplots()
#step4 绘制图像
ax.plot(x,y,label='linear')
#step5 添加标签,文字和图例
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title("Simple Plot")
ax.legend()
5.思考
1.请思考两种绘图模式的优缺点和各自适合的使用场景
从第二种方式的代码来看,先生成了一个Figure画布,然后在这个画布上隐式生成一个画图区域进行画图。
第一种方式同时生成了Figure和axes两个对象,然后用ax对象在其区域内进行绘图
如果从面向对象编程(对理解Matplotlib绘图很重要)的角度来看,显然第一种方式更加易于解释,生成的fig和ax分别对画布Figure和绘图区域Axes进行控制,第一种方式反而显得不是很直观,如果涉及到子图零部件的设置,用第一种绘图方式会很难受。
在实际绘图时,也更推荐使用第一种方式。
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
2.在第五节绘图模板中我们是以OO模式作为例子展示的,请思考并写一个pyplot绘图模式的简单模板
# 生成数据
x = np.arange(0, 6, 0.1) # 以0.1为单位,生成0到6的数据
y1 = np.sin(x)
y2 = np.cos(x)
# 绘制图形
```python
plt.plot(x, y1, label="sin")
plt.plot(x, y2, linestyle= "--", label="cos") # 用虚线绘制
plt.xlabel("x") # x轴标签
plt.ylabel("y") # y轴标签
plt.title("sin & cos") # 标题
plt.legend() #显示图例
plt.show()
``
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)