Matplotlib学习笔记
目标
- 使用Matplotlib的基本功能实现图形显示
- 使用实现多图显示
- 使用实现不同画图种类
1.1 认识Matplotlib
-
架构
-
容器层
-
Canvas--画板:是底层实现,不需要关注
-
Figure--画布:建立在Canvas之上,在使用之前每次都需要进行实例化
-
axes--坐标系:建立在Figure之上,数据的绘图区域
Axis(坐标轴):坐标系中的一条轴,包含大小限制、刻度和刻度标签
-
-
辅助显示层
- 添加坐标描述,标题等内容
-
图像层
- 设定要画一个什么样的图像:plot、scatter...
-
1.2 基础绘图功能(折线图plot)
为了更好地理解所有基础绘图功能,我们通过天气温度变化的绘图来融合所有的基础API使用。
-
matplotlib.pyplot模块
matplotlib.pytplot包含了一系列类似于matlab的画图函数。 它的函数作用于当前图形(figure)的当前坐标系(axes)。
import matplotlib.pyplot as plt
-
折线图绘制
展现上海一周的天气,比如从星期一到星期日的天气温度如下
# 1.创建画布(容器层) plt.figure(figsize=(10, 10)) # 2.绘制折线图(图像层) plt.plot([1, 2, 3, 4, 5, 6 ,7], [17,17,18,15,11,11,13]) # 3.显示图像 plt.show()
-
设置画布属性与图片保存
plt.figure(figsize=(), dpi=) figsize:指定图的长宽 dpi:图像的清晰度 返回fig对象 plt.savefig(path)
注意:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。
-
添加自定义x,y刻度
plt.xticks(x, **kwargs) # x:要显示的刻度值 plt.yticks(y, **kwargs) # y:要显示的刻度值
-
中文显示问题
-
网格展示
plt.grid(True, linestyle='--', alpha=0.5) # alpha为透明度
-
描述信息
添加x轴、y轴描述信息及标题
plt.xlabel("时间") plt.ylabel("温度") plt.title("中午11点0分到12点之间的温度变化图示")
汇总以上所有方法,完整代码如下:
import random from matplotlib import pyplot as plt # 1.生成数据 x = range(60) y_beijing = [random.uniform(15, 25) for i in x] y_shanghai = [random.uniform(20, 35) for i in x] # 全局设置中文显示 plt.rcParams['font.sans-serif'] = ['SimHei'] # 2.创建画布 plt.figure(figsize=(20, 8), dpi=100) # 3.绘制图形 # 1.一个图中绘制多个图,多次plot plt.plot(x,y_beijing, label='北京') plt.plot(x,y_shanghai, label='上海') # 4.添加x,y轴刻度 x_ticks_labels = ['12点{}分'.format(i) for i in x] y_ticks = range(40) font = {'family': 'SimHei', 'weight': 'bold', 'size': '10' } # 中文显示问题:https://www.cnblogs.com/hhh5460/p/4323985.html # 注意:第一个参数必须是数字,如果不是数字,需要进行值替换 # plt.xticks(x_ticks_labels[::5]) plt.xticks(x[::5], x_ticks_labels[::5],fontproperties="SimHei") plt.yticks(y_ticks[20::5]) # 4.1添加网格 # 属性: # alpha:透明度 # linestyle:绘制网格的方式 plt.grid(True, linestyle='--', alpha=1) # 4.2添加描述 plt.xlabel('时间', **font) plt.ylabel('温度', **font) plt.title('一小时内温度变化', fontproperties="SimHei") # 4.3显示图例 # 1.需要在显示之前,声明plot里面的具体值 # 注意:一定要在plt.plot()里面设置一个label,如果不设置,没法显示 plt.legend(loc=0) # 4.1图像保存 # plt.savefig('./images/02-plot') # 5.图像展示 plt.show()
-
折线图应用
- 应用于观察数据的变化
- 可以画出一些数学函数图像
1.3 常见图形绘制
Matplotlib能够绘制折线图、散点图、柱状图、直方图、饼图。我们需要知道不同的统计图的意义,以此来决定选择哪种统计图来呈现我们的数据。
-
折线图
api:plt.plot(x, y)
定义:以折线的上升或下降来表示统计数量的增减变化的统计图。
特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)
-
散点图
api:plt.scatter(x, y)
定义:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。
特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
-
柱状图
api:plt.bar(x, width, align='center', **kwargs)
定义:排列在工作表的列或行中的数据可以绘制到柱状图中。
特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)
-
直方图
api:matplotlib.pyplot.hist(x, bins=None)
定义:由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据范围,纵轴表示分布情况。
特点:绘制连续性的数据展示一组或者多组数据的分布状况(统计)
-
饼图
api:plt.pie(x, labels=,autopct=,colors)
定义:用于表示不同分类的占比情况,通过弧度大小来对比各种分类。
特点:分类数据的占比情况(占比)
小结
今天我们对Jupyter Notebook的使用和Matplotlib绘图的操作进行了总结,后续我们会总结Numpy和Pandas,在数据处理方面结合Matplotlib进行图形展示,会更直观。也是在工作中,经常用到的。
下期再会,拜了个拜~