【Matplotlib学习笔记(学习地址:阿里云Python学习路线 – 阶段3)】

1、什么是Matplotlib:

(1)Matplotlib:
mat – matrix(矩阵)
plot – 画图
lib – library 库

(2)专门用于开发2D图表(包括3D图表);

(3)使用起来极其简单;

(4)以渐进、交互式方式实现数据可视化

2、画图:

(1)简单尝试绘制一幅图:

import matplotlib.pyplot as plt #导包
%matplotlib inline

plt.figure() #创建画布
plt.plot([1,0,9],[4,5,6]) #传入横、纵坐标,连线
plt.show()

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

(2)matplotlib图像结构:

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

3、Matplotlib三层结构(容器层、辅助显示层、图像层)

(1)容器层Canvas

1)画板层Figure

2)画布层

3)绘图区 / 坐标系

x 、y轴张成的区域

(2)辅助显示层(图例、网格这些的东西)

(3)图像层(就是图表)

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

容器层:

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

辅助显示层:

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

图像层:

图像层指Axes内通过plot、scatter、bar、histogram、pie等函数根据数据绘制出的图像。

4、折线图绘制与保存图片

(1)matplotlib.pyplot模块

import matplotlib.pyplot as plt

matplotlib.pyplot包含了一系列类似于matlab的画图函数。它的函数作用于当前图形(figure)的当前坐标系(axes)。

(2)折线图绘制与显示

展示上海一周的天气:

1、创建画布(容器层)
plt.figure()
2、绘制折线图(图像层)
plt.plot([1,2,3,4,5,6,7] , [17,17,18,15,11,11,13])
3、显示图像
plt.show()

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

(3)设置画布属性与图片保存

plt.figure(figsize=(), dpi=)
    figsize:指定图的长宽
    dpi:图像的清晰度
    返回fig对象
plt.savefig(path)
1、创建画布(容器层)
plt.figure(figsize=(20,8), dpi=80)
2、绘制折线图(图像层)
plt.plot([1,2,3,4,5,6,7] , [17,17,18,15,11,11,13])
3、显示图像
plt.show()

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

(4)完善原始折线图1(辅助显示层)

1)原始图像:

需求:画出某城市11点到12点 1h内 每分钟的温度变化折线图,温度范围再15° – 18°

原始代码及图像:

1、准备数据 x、y
import random
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]

2、创建画布
plt.figure(figsize=(10,8),dpi=80)

3、绘制图像
plt.plot(x,y_shanghai)

4、显示图像
plt.show()

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

2)添加自定义x、y刻度

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】
1、准备数据 x、y
import random
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]

2、创建画布
plt.figure(figsize=(10,8),dpi=80)

3、绘制图像
plt.plot(x,y_shanghai)

修改x、y刻度
准备x的刻度说明
x_lable = ['11.{}'.format(i) for i in x]
plt.xticks(x[::5], x_lable[::5])
plt.yticks(range(0,40,5))

4、显示图像
plt.show()

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】
plt.grid(True, linestyle='--', alpha=0.5)

True : 是否添加网格(是)

linestyle : 线条风格

alpha :透明度

4)添加描述信息(x轴、y轴描述信息 及 标题)

plt.xlabel('time')
plt.ylabel('temperature')
plt.title('Temperature variation diagram')
1、准备数据 x、y
import random
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]

2、创建画布
plt.figure(figsize=(10,8),dpi=80)

3、绘制图像
plt.plot(x,y_shanghai)

修改x、y刻度
准备x的刻度说明
x_lable = ['11.{}'.format(i) for i in x]
plt.xticks(x[::5], x_lable[::5])
plt.yticks(range(0,40,5))

添加网格显示
plt.grid(True, linestyle='--', alpha=0.5)

添加描述信息
plt.xlabel('time')
plt.ylabel('temperature')
plt.title('Temperature variation diagram')

4、显示图像
plt.show()

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

1)图形风格:

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

2)图例位置:

plt.legend(loc = 'best')

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

3)修改代码如下:

import random
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]

2、创建画布
plt.figure(figsize=(10,8),dpi=80)

3、绘制图像
plt.plot(x,y_shanghai, color = 'r' , linestyle = '--' , label = 'shanghai')
plt.plot(x,y_beijing , color = 'b' , label = 'beijing')

显示图例
plt.legend()

修改x、y刻度
准备x的刻度说明
x_lable = ['11.{}'.format(i) for i in x]
plt.xticks(x[::5], x_lable[::5])
plt.yticks(range(0,40,5))

添加网格显示
plt.grid(True, linestyle='--', alpha=0.5)

添加描述信息
plt.xlabel('time')
plt.ylabel('temperature')
plt.title('Temperature variation diagram')

4、显示图像
plt.show()

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】
import random
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]

2、创建画布
plt.figure(figsize=(10,8),dpi=80)
figure , axes = plt.subplots(nrows=1,ncols=2,figsize=(10,8),dpi=80)

3、绘制图像
axes[0].plot(x,y_shanghai, color = 'r' , linestyle = '--' , label = 'shanghai')
axes[1].plot(x,y_beijing , color = 'b' , label = 'beijing')

显示图例
axes[0].legend()
axes[1].legend()

修改x、y刻度
准备x的刻度说明
x_label = ['11.{}'.format(i) for i in x]
axes[0].set_xticks(x[::5])
axes[0].set_xticklabels(x_label[::5])
axes[0].set_yticks(range(0,40,5))
axes[1].set_xticks(x[::5])
axes[1].set_xticklabels(x_label[::5])
axes[1].set_yticks(range(0,40,5))

添加网格显示
axes[0].grid(True, linestyle='--', alpha=0.5)
axes[1].grid(True, linestyle='--', alpha=0.5)

添加描述信息
axes[0].set_xlabel('time')
axes[0].set_ylabel('temperature')
axes[0].set_title('Temperature variation diagram of shanghai')
axes[1].set_xlabel('time')
axes[1].set_ylabel('temperature')
axes[1].set_title('Temperature variation diagram of beijing')

4、显示图像
plt.show()

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

(7)折线图的应用场景

某事物、某指标随时间的变化状况;也可以画数学函数图像

5、散点图(scatter)

(1)散点图应用场景

判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

(2)散点图绘制

1、准备数据
x = [1,2,3,4,5,6,7,8,9,10]
y = [10,9,8,7,6,5,4,3,2,1]
2、创建画布
plt.figure(figsize=(20,8),dpi=80)
3、绘制图形
plt.scatter(x,y)
4、显示图像
plt.show()

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

6、柱状图(bar)

(1)柱状图应用场景

绘制离散的数据,能一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

(2)柱状图绘制

1)单纯的统计:

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】
1、准备数据
name = ['AAA' , 'BBB' , 'CCC' , 'DDD' , 'EEE']
nums = [123 , 136 , 129 , 101 , 121]

2、创建画布
plt.figure(figsize=(20,8),dpi=80)

3、绘制柱状图
x_ticks = range(len(name))
plt.bar(x_ticks,nums,color=['b','r','g','c','m'])

修改x刻度
plt.xticks(x_ticks,name)

添加标题
plt.title('Film revenue')

添加网格
plt.grid(linestyle='--',alpha=0.5)

4、显示图像
plt.show()

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

2)对比:

1、准备数据
movie_name = ['AAA' , 'BBB' , 'CCC']

first_day = [10000,15000,20000]
first_weekend = [30000,35000,40000]

2、创建画布
plt.figure(figsize=(20,8),dpi=80)

3、绘制柱状图
plt.bar(range(3),first_day,width=0.2,label='首日票房')
plt.bar([0.2,1.2,2.2],first_weekend,width=0.2,label='首周票房')

显示图例
plt.legend()

4、修改刻度
plt.xticks([0.1,1.1,2.1],movie_name)

4、显示图像
plt.show()

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

7、直方图(histogram)

(1)直方图应用场景

绘制连续性的数据展示一组或者多组数据的分布情况。(统计)

(2)相关概念

组数:在统计数据时,我们把数据按照不同的范围分成几个组,分成的组的个数称为组数;

组距:每一组两个端点的差;

直方图是连着的,柱状图是分开的;

直方图展示数据的分布,柱状图比较数据的大小;

直方图x轴位定量数据,柱状图x轴为分类数据;

直方图柱子宽度可不一,柱状图柱子宽度必须一致;

(3)直方图绘制

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

组数 = 极差 // 组距

y轴的变量,可以是频数,也可以是频率

plt.hist(time,bins=group_num,density=True)
需求:电影时长分布状况
1、准备数据
time = [131,98,125,131,124,139,131,117,128,108 ]

2、创建画布
plt.figure(figsize=(20,8),dpi=80)

3、绘制直方图
distance = 2
group_num = (max(time) - min(time)) // distance
plt.hist(time,bins=group_num)

修改x轴刻度
plt.xticks(range(min(time),max(time),distance))

添加网格
plt.grid(linestyle='--',alpha=0.5)

4、显示图像
plt.show()

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

8、饼图(pie)

(1)饼图应用场景

分类数据的占比情况。(占比)

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

(2)绘制饼图

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】
1、准备数据
movie_name = ['A','B','C','D']
place_count = [10,20,30,40]

2、创建画布
plt.figure(figsize=(20,8),dpi=80)

3、绘制饼图
plt.pie(place_count,labels=movie_name,colors = ['r','m','b','g'],autopct='%1.2f%%')

显示图例
plt.legend()

plt.axis('equal')

4、显示图像
plt.show()

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

9、总结

【Matplotlib学习笔记(学习地址:阿里云Python学习路线 - 阶段3)】

Original: https://blog.csdn.net/The_friends/article/details/123440860
Author: 不错就是对
Title: 【Matplotlib学习笔记(学习地址:阿里云Python学习路线 – 阶段3)】

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/765371/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球