Matplotlib基本知识点

        7.1 功能:主要用于绘制二维图表

        7.2 matplotlib三层结构

  • 容器层
  • canvas
  • figure
  • axes
  • 辅助显示层
  • 添加x轴、y轴描述,标题等
  • 图像层
  • 绘制什么图像的声明

        7.3 简单应用:绘制简单图标



                    步骤:



  • 创建画布
  • 绘制图像
  • 展示图像
import matplotlib.pyplot as plt


# 1、创建画布
plt.figure(figsize=(20,8),dpi=100)


# 2、绘制图像
x = [1,2,3]
y = [4,5,6]
plt.plot(x,y)


# 3、显示图像
plt.show()

 



结果展示:



                 

Python 基本图形绘制的实验思考 python基本图形绘制第二周_机器学习


 


 


    7.4 折线图与基础绘图功能


            7.4.1 图像保存——一定要放到show()函数前面


                    


plt.savafig("保存路径")

 


            7.4.2 自定义x,y


                plt.xticks


                plt.yticks


                注意:第一个参数必须是数字,如果不是数字,要进行值替换


            示例:绘制天气折线图


 


import matplotlib.pyplot as plt
import random
# 创建数据
x = range(60)
y = [random.uniform(10,15)for i in x]


# 创建画布
plt.figure(figsize=(20,8),dpi=100)


# 图形绘制
plt.plot(x,y)


# 自定义x , y 轴刻度
y_ticks = range(40)
x_ticks_labels = ["11点{}分".format(i) for i in x]
plt.yticks(y_ticks[::5])
plt.xticks(x[::5],x_ticks_labels[::5])      # 必须先写x值,最先传进去的必须是数字


# 图形展示
plt.show()

 


 


结果展示:

Python 基本图形绘制的实验思考 python基本图形绘制第二周_Python 基本图形绘制的实验思考_02


           


            7.4.3 添加网格显示


                


plt.grid(True,linestyle="-",alpha=1)          # True为添加,linestyle="-"表示绘制网格方式为实线,alpha设置透明度

 


            7.4.4 添加描述


                    


plt.xlabel("时间")
plt.ylabel("温度")
plt.title("一小时温度变化图",fontsize = 20)

 


注意 : 图表中汉字显示为方框解决办法:


                            添加以下语句,指定默认字体为SimHei(黑体)


                    


# 指定默认字体
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']

            7.4.5 添加图例


                    plt.legend()


                    注意:使用此函数时必须在画图时添加label属性


 


# 图形绘制
plt.plot(x,y_beijing,color="r",linestyle="-",label="北京")            # 设置线条颜色,线条类型:-实线,--虚线,-.点划线
plt.plot(x,y_shanghai,label="上海")
# 显示图例
plt.legend(loc=0)            #在画图时添加label属性           loc设置图例显示位置,默认为0右上角

 


               结果:                 

Python 基本图形绘制的实验思考 python基本图形绘制第二周_python_03


 


        7.5 多坐标系显示图像


                fig,axes = plt.subplots(nrows=*,ncols=*,figsize=(*,*),dpi=*)


                        nrows——行数


                        ncols——列数


                        注意:有些方法需要添加set_*才能显示


            代码示例:分开绘制北京和上海11 点到12点的温度变化折线图


"""
多个坐标系显示图像
需求:绘制出北京和上海11点到12点的温度变化折线图


"""

import matplotlib.pyplot as plt
import random
# 指定默认字体
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']

# 创建数据
x = range(60)
y_beijing = [random.uniform(10,15)for i in x]
y_shanghai = [random.uniform(15,25)for i in x]

# 创建画布
# plt.figure(figsize=(20,8),dpi=50)
fig,axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=50)

# 图形绘制
# plt.plot(x,y_beijing,color="r",linestyle="-",label="北京")
# plt.plot(x,y_shanghai,label="上海")
axes[0].plot(x,y_beijing,color="r",linestyle="-",label="北京")
axes[1].plot(x,y_shanghai,label="上海")


# # 自定义x , y 轴刻度
y_ticks = range(40)
x_ticks_labels = ["11点{}分".format(i) for i in x]
# plt.yticks(y_ticks[::5])
# plt.xticks(x[::5],x_ticks_labels[::5])      # 必须先写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])


# # 添加网格显示
# plt.grid(True,linestyle="-",alpha=1)          # True为添加,linestyle="-"表示绘制网格方式为实线,alpha设置透明度
axes[0].grid(True,linestyle="-",alpha=1)
axes[1].grid(True,linestyle="-",alpha=1)


# # 添加描述
# plt.xlabel("时间",fontsize = 16)
# plt.ylabel("温度",fontsize = 16)
# plt.title("一小时温度变化图",fontsize = 20)
axes[0].set_xlabel("时间",fontsize = 16)
axes[0].set_ylabel("温度",fontsize = 16)
axes[0].set_title("北京一小时温度变化图",fontsize = 20)
axes[1].set_xlabel("时间",fontsize = 16)
axes[1].set_ylabel("温度",fontsize = 16)
axes[1].set_title("上海一小时温度变化图",fontsize = 20)


# 显示图例
# plt.legend()
axes[0].legend(loc=0)
axes[1].legend(loc=0)


# 图形展示
plt.show()

 


 


结果展示:

Python 基本图形绘制的实验思考 python基本图形绘制第二周_python_04


 


 


        7.6 折线图的应用场景


                (1)表述数据变化


                (2)绘制数学图像


                举例:绘制y = sin(x)图像


"""
需求:绘制y = sinx 的图像
"""
import matplotlib.pyplot as plt
import numpy as np
# 1、创建数据
x = np.linspace(-10,10,1000)
y = np.sin(x)


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


# 3、绘制图像
plt.plot(x,y)
# 添加网格
plt.grid()


# 4、展示图像
plt.show()

 


结果展示:

Python 基本图形绘制的实验思考 python基本图形绘制第二周_python_05


 


 


        7.7 常见图形绘制


  • 折线图——plt.plot()
  • 变化
  • 散点图——plt.scatter()
  • 分布规律
  • 柱状图——plt.bar()
  • 统计、对比
  • 直方图——plt.hist()
  • 统计、分布
  • 饼图——plt.pie()
  • 占比

                使用示例:


"""
使用matplotlib绘制其他图像
"""


import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']


"""
1、散点图
    plt.scatter()
"""


# # 1.1、数据准备
# x = [1.2,1.6,0.9,3.8,2.5,2.7,1.4,5.6,5.7,4.2]
# y = [4.2,5.2,4.6,2.8,6.7,1.9,2.5,8.2,1.6,5.0]
#
# # 1.2、创建画布
# plt.figure(figsize=(20,8),dpi=50)
#
# # 1.3、绘制图像
# plt.scatter(x,y)
#
# # 1.4、展示图像
# plt.show()


"""
2、柱状图
    plt.bar()
    需求:绘制电影的播放量柱状图
"""

# 2.1数据准备
movie_name = ['雷神','诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传']
    # 横坐标
x= range(len(movie_name))
    # 播放量
y = [73853,57767,22354,15969,14839,8725,8716]
# 2.2创建画布
plt.figure(figsize=(20,8),dpi=50)


# 2.3绘制图像
plt.bar(x,y,color=['b','r','y','g','c','m','k'],width=0.5)
# x轴
plt.xticks(x,movie_name,fontsize=18)
plt.xlabel('电影名称',fontsize=20)
plt.ylabel('播放量',fontsize=20)
# 绘制网格
plt.grid()
# 添加标题
plt.title('某月电影播放量统计',fontsize=20)
# 2.4展示图象
plt.show()


结果展示:


Python 基本图形绘制的实验思考 python基本图形绘制第二周_折线图_06

Python 基本图形绘制的实验思考 python基本图形绘制第二周_机器学习_07


 


            此链接为matplotlib官网,进入查找API的使用方法绘制各种图像


 


笔记中的练习代码下载链接: