人工智能机器学习有关-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()

posted @ 2021-10-20 18:23  听,花开了  阅读(174)  评论(0)    收藏  举报