人工智能机器学习有关-Matplotlib工具的使用(二)
Matplotlib的使用
1、Matplotlib:可以用来画图的工具,为了让数据看起来更加直观。
-
定义
主要用于开发2D图表(3D),数据分析,基于分析,进行展示
-
绘图流程
- 创建画布
- 绘制图像
- 显示图像
import matplotlib.pyplot as plt # 1.创建画布 plt.figure #2. 图像绘制 x = [1,2,3,4,5,6] y = [3,6,3,6,3,10] plt.plot(x,y) # 3.图像展示 plt.show() -
matplotlib三层结构
-
容器层
- canvas
- figure
- axes
-
辅助显示层
添加X轴,y轴描述,标题.....
-
图像层
绘制什么图像的声明
-
2、 图像的保存
```
# 1.创建画布
# figsize指画布大小,dpi指像素
plt.figure(figsize=(20,8),dpi=100)
# 2. 图像绘制
x = [1,2,3,4,5,6]
y = [3,6,3,6,3,10]
plt.plot(x,y)
# 2.1 图像保存
plt.savefig("./data/demo.png") #保存在根目录下面的data文件夹里面,名字Wiedemo.png
# 3.图像展示
plt.show() # 注意,当show之后,就释放资源了,就不可以在进行其他的操作了
```
3、 添加x,y轴
import matplotlib.pyplot as plt
import random
# 0.生成数据
x = range(60)
# 列表生成式
y = [random.uniform(10,15) for i in x]
# 1.创建画布
plt.figure(figsize=(20,8),dpi=100)
# 2.图像绘制
plt.plot(x,y)
# 2.1 添加x,y轴刻度
y_ticks = range(40)
# 这一步出现['11点0分','11点1分','11点2分','11点3分','11点4分'。。。
x_ticks_labels = ["11点{}分".format(i) for i in x]
# 控制y轴,每一格之间的距离是5
plt.yticks(y_ticks[::5])
# 控制x轴,每一个格之间距离是5,且显示为11点0分,11点5分。。。
plt.xticks(x[::5],x_ticks_labels[::5])
# 3.图像展示
plt.show()

4、 添加网格
# True代表添加网格;linestyle="--"代表网格为虚线,“-”代表为实线,alpha=1代表为透明度
plt.grid(True,linestyle="--",alpha=1)

5、添加描述
# 2.3 添加描述
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("一小时温度变化图",fontsize=20)
如果汉字不显示,则这样解决:
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=13)

6、 绘制多个曲线并显示图例
import matplotlib.pyplot as plt
import random
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=20)
# 0.生成数据
x = range(60)
y_beijing = [random.uniform(10,15) for i in x]
y_shanghai = [random.uniform(15,25) for i in x]
# 1.创建画布
plt.figure(figsize=(20,8),dpi=100)
# 2.图像绘制,显示图例的话需要在这个里面假如label
plt.plot(x,y_beijing,label="北京")
plt.plot(x,y_shanghai,label="上海")
# 2.1 添加x,y轴刻度
y_ticks = range(40)
# 这一步出现['11点0分','11点1分','11点2分','11点3分','11点4分'。。。
x_ticks_labels = ["11点{}分".format(i) for i in x]
# 控制y轴,每一格之间的距离是5
plt.yticks(y_ticks[::5])
# 控制x轴,每一个格之间距离是5,且显示为11点0分,11点5分。。。
plt.xticks(x[::5],x_ticks_labels[::5])
# 2.2 添加网格
# True代表添加网格;linestyle="--"代表网格为虚线,“-”代表为实线,alpha=1代表为透明度
plt.grid(True,linestyle="--",alpha=1)
# 2.3 添加描述
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("一小时温度变化图",fontsize=20)
# 2.4 显示图例
plt.legend()
# 3.图像展示
plt.show()

7、 多个坐标系显示图像
import matplotlib.pyplot as plt
import random
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=13)
# 0.生成数据
x = range(60)
# random.uniform(10,15) for i in x;意思是随机生成60个数字,数字范围在10-15之间
y_beijing = [random.uniform(10,15) for i in x]
y_shanghai = [random.uniform(15,25) for i in x]
# 1.创建画布,nrows代表几行,ncols代表几列
fig, axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)
# 2.图像绘制,显示图例的话需要在这个里面加入label
axes[0].plot(x,y_beijing,label="北京",color="g",linestyle="-.")
axes[1].plot(x,y_shanghai,label="上海")
# 2.1 添加x,y轴刻度
y_ticks = range(40)
# 这一步出现'11点0分','11点1分','11点2分','11点3分','11点4分'。。。
x_ticks_labels = ["11点{}分".format(i) for i in x]
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_labels[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_labels[::5])
# 2.2 添加网格
axes[0].grid(True,linestyle="--",alpha=1)
axes[1].grid(True,linestyle="--",alpha=1)
# 2.3添加描述
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("北京一小时温度变化图")
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("上海一小时温度变化图")
# 2.4显示图例
axes[0].legend(loc=0)
axes[1].legend(loc=0)
# 3.图像展示
plt.show()

8、plot绘制数学图像
-
在生成数据的时候
y = np.sin(x) #即代表是sin函数;当然可以使x*x*x,就是三次方函数代码如下
import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=13)
# 0.生成数据
x = np.linspace(-10,10,1000)
y = np.sin(x)
# 1.创建画布
plt.figure(figsize=(20,8),dpi=100)
# 2.绘制
plt.plot(x,y)
# 显示网格
plt.grid()
# 3.显示
plt.show()

9、散点图
-
在图像绘制的时候,选择散点图
plt.scatter(x,y) #这是绘制散点图的代码具体代码如下
import matplotlib.pyplot as plt
# 0. 数据准备
x = [225.98, 247.07, 253.14, 457.85, 241.58, 301.01, 20.67, 288.64,
163.56, 120.06, 207.83, 342.75, 147.9 , 53.06, 224.72, 29.51,
21.61, 483.21, 245.25, 399.25, 343.35]
y = [196.63, 203.88, 210.75, 372.74, 202.41, 247.61, 24.9 , 239.34,
140.32, 104.15, 176.84, 288.23, 128.79, 49.64, 191.74, 33.1 ,
30.74, 400.02, 205.35, 330.64, 283.45]
# 1.创建画布
plt.figure(figsize=(20,8),dpi=100)
# 2.图像绘制(散点图)
plt.scatter(x,y)
# 3.图像展示
plt.show()

10、柱状图
- 图像绘制的时候选择柱状图
plt.bar(x,y,width=0.5)
具体代码如下
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=13)
# 0.准备数据
# 电影名字
movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
# 横坐标
x = range(len(movie_name))
# 票房数据
y = [73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]
# 1.创建画布
plt.figure(figsize=(20,8),dpi=100)
# 2.图像绘制(柱状图)
plt.bar(x,y,width=0.5)
# 2.1 x轴
plt.xticks(x,movie_name,fontsize=15)
# 2.2 添加网格
plt.grid()
# 2.3标题
plt.title("某电影票房统计")
# 3.图像展示
plt.show()

浙公网安备 33010602011771号