matplotlib教程(一)—— 入门基础

前言

           Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式;它可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等

           在使用它之前,应导入:import  matplotlib.pyplot  as  plt

1. 画布与子图

    matplotlib所绘制的图位于画布(Figure)对象中,我们可以通过去设置一张画布,进而在画布上画出按我们希望的格式排版的多个子图

 1.1 画布与子图的创建

   1.1.1 生成画布

  • 语法plt.figure()       #生成新的画布

常用参数说明:

                       

             num:画布编号或名称,数字为编号 ,字符串为名称

             figsize:指定figure的宽和高,单位为英寸,输入格式为(宽,高)

             dpi:分辨率(一般笔记本200,若要比较清楚可设置400、500左右)

             facecolo:背景颜色

             edgecolor:边框颜色

             frameon:是否显示边框(默认显示)


   1.1.2 创建单个子图

  •  语法: 画布.add_subplot(nrows,ncols,index)

常用参数说明:        

               nrows,ncols:行数,列数(即创建 几乘几 的图片)

               index:创建子图的序号位置(从1开始)

import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用黑体显示中文
data = pd.read_excel(r"E:\python 资料\孙兴华 数据分析教程\matplotlib课件和笔记\课件\09.折线与柱状组合图.xlsx")
print(data)fig = plt.figure(num = "示例图") # 创建画布
first = fig.add_subplot(2,2,1) # 创建第一个子图
plt.plot(data['班级'],data['毛利率'],label = "毛利率",color="red",marker="*") #在第一个子图位置画一个折线图
second = fig.add_subplot(2,2,2) # 创建第二个子图
third = fig.add_subplot(2,2,3) # 创建第三个子图
fourth = fig.add_subplot(2,2,4) # 创建第四个子图 
plt.bar(data["班级"],data["销售量"],color="yellow")#在第四个子图位置画一个柱状图
plt.show() #显示输出图像
上述代码输出结果

   1.1.3 创建多个子图 

  • 语法:fig,axes =  plt.subplots(nrows,ncols)

 参数: 

           sharex / sharey:所有子图是否使用相同的x轴 / y轴刻度

 :这里需要用两个变量来接收,fig指生成的画布,axes是包含n×n子图的数组

        axes可以直接像二维数组那样索引,可以用 axes[ i,j ].plot / bar(  )... 在指定位置作图

# 上述代码等价
fig,axes = plt.subplots(2,2)
axes[0,0].plot(data['班级'],data['毛利率'],label = "毛利率",color="red",marker="*")#第一个子图
axes[1,1].bar(data["班级"],data["销售量"],color="yellow")#第四个子图
plt.show()

 1.2 新增子区域

     所谓新增子区域可以理解为在一个图中,我们想再添加 / 叠加另外一个图

     操作原理是通过设定图的大小和位置来进行子区域的插入 

  • 语法fig.add_axes([ left,bottom,width,height ])

 参数说明:

             left、bottom:距离边框左侧、底部的距离

             width、height:自身的宽和高度

#导入数据
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用黑体显示中文
data = pd.read_excel(r"E:\python 资料\孙兴华 数据分析教程\matplotlib课件和笔记\课件\09.折线与柱状组合图.xlsx")fig = plt.figure() #创建画布
axes1 = fig.add_axes([0.1,0.1,0.8,0.8])#设定图1的大小和位置
axes1.bar(data.班级,data.销售量) #在图1上作图
axes1.set_title("销售量") #设定图1的标题axes2 = fig.add_axes([0.65,0.6,0.25,0.25])#设定图2的大小和位置
axes2.plot(data.班级,data.毛利率)
axes2.set_title("毛利率")
plt.show()

 1.3 调整边框与子图的间距

   1.3.1 自动调整

  • 语法:fig.tight_layout()     # 不会让图片之间有重叠

   1.3.2 手动调整 

  • 语法:fig.subplots_adjust()

常用参数:
              left / right / top / bottom:子图与边框 左侧 / 右侧 / 顶部 /底部 距离百分比

              wspace / hspace:子图之间的 宽度 / 高度 百分比

 1.4 案例:图形组合 

  • 要求:利用子区域方法,作出柱形图和折线图的组合图形(需掌握折线图和柱状图知识)
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用黑体显示中文
# 导入数据
data = pd.read_excel(r"E:\python 资料\孙兴华 数据分析教程\matplotlib课件和笔记\课件\09.折线与柱状组合图.xlsx")
# 创建画布
fig = plt.figure()# 创建图1————柱状图
picture1 = fig.add_subplot(1,1,1)
picture1.bar(data["班级"],data["销售量"],label = "销售量")
picture1.legend(loc = "best") # 打开图例,best指自动选择最佳位置
picture1.set_xlabel("班级") #设置x轴名称
picture1.set_ylabel("销售量") #设置y轴名称# 创建图2————折线图
picture2 = picture1.twinx() # 设置x轴为共享轴,图1使用左侧y轴,图2使用右侧y轴
picture2.plot(data["班级"],data["毛利率"],marker = "o",color = "red",label = "毛利率")
picture2.legend(bbox_to_anchor=(1,0.93)) # 打开图例
picture2.set_ylabel("毛利率") #设置y轴名称plt.show()
柱状图和折线图的组合图

2. 图的样式

      matplotlib的主函数plot接收带有x和y轴的数组,以及一些可选的参数来指明颜色和线的类型

  • 语法:plot(x,y,[ fmt ],color = ,linestyle = ,marker =  )

 2.1 样式字符串

      matplotlib的格式字符串 fmt “ [ color ] [ marker ] [ linestyle ] ”组成,线条的颜色、标记、线的形状 三部分

 例子:ax.plot(x,y,“ko--”)           表示黑色,标记为实心圆的虚线 

 

 2.1.1 颜色(color)

  • 单个颜色字符:取值范围为r’,‘g’,‘b’,‘c’,‘m’,‘y’,‘k’
  • 也可以自定义颜色类型,例如:SeaGreen、#8FBC8F 等
颜色对应示意图

  2.1.2 标记(marker)

  •  标记即数据点的图案样式,标记字符与外观对应关系如下图所示:
标记字符与外观对应关系

标记的大小与颜色:

  • ms:标记的大小(markersize)
  • mfc:标记内部的颜色(markerfacecolor)
  • mec:标记边框的颜色(markeredgecolor)

  2.1.3 线的形状(linestyle)

  • 线形的取值范围为:-’, ‘--’, ‘-.’, ‘:’
  • 线形字符与外观对应关系如下图所示:
线形字符与外观对应关系

线的其他参数:

  • lw:线的宽度(linewidth)
  • drawstyle:点的插入方式(默认线性内插, “steps-post”:阶梯式)

2.2 刻度与标签

 pyplot中有许多对象方法,可以控制刻度,标题,标签等

 如果我们在调用时不传入参数,就会返回当前的参数值;如果传入参数,就会修改参数值

方法作用备注
fig.suptitle()设置画布标题
axes.set_title()设置图片标题
axes.set_xlabel()设置x轴的名称y轴直接将x换成y即可
axes.set_xlim()设置x轴的范围传入一个含min和max的列表
axes.set_xticks()设置x轴刻度

直接传入一个列表即可

也可直接传入两个列表,另一为对应标签

axes.set_xtickslabels()设置x轴刻度的对应标签

传入一个与刻度数量相同的字符串列表

 关于标签的一些参数:
                     rotation:标签逆时针旋转度数(默认0)                    

                     fontsize:标签字体大小(xx-small, x-small, small, medium, large, x-large,

                                                                xx-large, larger, smaller  或者输入数字也可)

 2.3 图例

  • 语法:axes.legend( [ handles= ,labels =] ) 

命名参数
             handles:可见对象(比如线条、形状)序列,传入一个元组

             labels:各个对象的名称,传入一个字符串列表

             title:图例的名称

注:     前两个参数应该配合一起使用;

            若在定义各个图 / 线时,使用label参数定义了名称,则可以什么都不传入,自行匹配


 位置参数:

              loc:默认为 “best” 即自动选择最优位置,该参数也可传入(left、right、center、

                       upper、lower)或者他们的组合来表示具体位置

              

              bbox_to_anchor:该参数可直接传入一个坐标(x,y),x和y取值范围为0 ~ 1


样式参数:

           prop:传入一个数字,调整图例大小

           ncol:排列方式(默认1:并列展示,2:并排展示)   

import matplotlib.pyplot as pltline1, = plt.plot([1, 1], marker='o')
line2, = plt.plot([2, 2])
plt.legend((line1, line2), ['1st', '2nd'], loc= "best",title='legends', ncol=2, # 按行排列facecolor='gray', edgecolor='r') #背景颜色 / 边框颜色
plt.show()

 2.4 注释(数据标签)

   所谓注释,即我们想在图上添加一些重要点的说明;或者我们想标出数据点所对应的y值 

  • 语法:plt.text(x,y,string,...)   

参数说明:

         

         x,y:坐标值 一一> 指注释的位置

         string:注释的内容,若要写数据标签,直接传入str(y数据)即可

         fontsize:注释字体大小

         ha水平对齐方式 ,参数:[ ‘center’(居中对齐) | ‘right’ (右对齐)| ‘left’(左) ]

         va垂直对齐方式 ,参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]

         rotation:注释的逆时针旋转角度

         alpha:文字透明度

  • 补充:enumerate() 

       在添加注释时,因为我们在填入坐标值时一次只能传入一对,所以我们不能利用dataframe的行列索引传入,我们需要分别获取对应的下标(x轴)和数据(y轴),我们就可以利用enumerate函数:for  x,y  in  enumerate(列表名):   x,y就分别得到对应下标和数据

import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用黑体显示中文
# 导入数据
data = pd.read_excel(r"E:\python 资料\孙兴华 数据分析教程\matplotlib课件和笔记\课件\09.折线与柱状组合图.xlsx")
# 创建画布
fig = plt.figure()# 创建图1————柱状图
picture1 = fig.add_subplot(1,1,1)
picture1.bar(data["班级"],data["销售量"],label = "销售量")
picture1.legend(loc = "best") # 打开图例,best指自动选择最佳位置
picture1.set_ylim([0,12000]) #设置y轴范围# 添加数据标签
for x,y in enumerate(data["销售量"]):picture1.text(x,y+200,str(y),ha = "center")plt.show()
添加数据标签后的销量图

3. 图的保存

  • 语法:plt.savefig(路径字符串,dpi = ,format = )

参数说明:
            dpi:图片分辨率,默认为100(一般用200)

            facecoler / edgecolor:多余背景 / 边框 颜色(默认白色)

            format:格式(‘png’,‘pdf’,‘jpg’...)

            bbox_inches保存的图片范围(若传入‘tight’,则去除周围空白

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/618196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【 ATU 随笔记 - Inverter 】PV Inverter 太阳能逆变器市场分析

一、简介 在上一篇的介绍中与大家分享了Micro Inverter ( 微型逆变器 )的用途与特色,也提到 Micro Inverter 适合家庭或是一些小型企业的需求。太阳能作为再生能源的代表,在当今能源转型中扮演着重要角色,也是有大型企业、大型能源站的需求&a…

C#编程-实现重写

实现重写 实现派生类中基类的成员称为重写。在C#中,可以重写方法、属性和索引器。 重写是多态性的一种形式,因为它使您能够创建具有相同名称和不同功能的不同代码块。 重写函数 在面向对象编程中,子类可以提供超类中已定义的专门版本的函数。这称为函数重写。 函数重写是…

恢复 iPhone 和 iPad 数据的 10 个好工具 - [苹果数据恢复]

它发生了.. 有时您需要从您的手机或平板设备恢复重要数据。 许多人已经开始将重要文件存储在手机上,因为他们几乎可以在任何情况下随时随地轻松访问数据。 不言而喻; 您可以轻松访问您的电子邮件、共享图片、编辑和共享文档、支付账单等等,只需在您的手…

Git LFS 大文件存储

Git 碰到大文件的困境 Git 是业界流行的分布式版本控制工具,本地仓库与远端仓库同样保存了全量的文件和变更历史,这样让代码协作变得简单和高效。但也正因为如此,Git针对大型文件(例如图片、视频或其他二进制文件)的版…

RT-Thread GD32F4xx实现SD卡热插拔检测功能

GD32F470移植RT-Thread操作系统添加SD卡功能,增加SD卡热插拔检测 一、RT-Thread移植sd卡功能二、实现SD卡热插拔检测原理三、软件实现过程四、延展之ASSERT ERROR,即RT-Thread断言错误五、延展之STM32 SD卡热插拔检测六、结束语 一、RT-Thread移植sd卡功…

最近很火的一款的低代码开发平台

目录 一、JNPF开发平台 二、JNPF界面示意图 三、技术栈展示 技术点: 开发环境 前后端分离 服务无状态 现在,很多公司在数据化的过程中,都需要构建很多相应的内部工具来支持他们的业务发展,比如运营使用的活动后台、用户管理…

红队专题-Golang工具ChYing

Golang工具ChYing 招募六边形战士队员原chying工具代码分析并发访问控制并发 原子 写入读取 通道嵌套映射结构初始化启动代理服务器重启代理服务器 招募六边形战士队员 一起学习 代码审计、安全开发、web攻防、逆向等。。。 私信联系 原chying工具代码分析 前有 Chying 后有…

DAY6--learning english

一、积累 1.sip She took a small sip of the hot tea to savor its delicate flavor. 她小口抿了一口热茶,细细品味其中的淡雅滋味。 2.vacuum Expreience the amazing cleaning power of vaccum cleaner. 体验真空吸尘器惊人的清洁能力。 3.stray Stray kitte…

伴鱼实时数仓建设案例

伴鱼实时数仓建设案例 文章目录 伴鱼实时数仓建设案例伴鱼实时作业应用场景伴鱼实时数仓的建设体系DWD 层复杂场景数据处理方案1. 数据的去重2. join场景两条实时数据流相关联对于关联历史数据 3. 从数据形态观查join DWS 数据层数据处理方案未来与展望 随着伴鱼业务的快速发展…

如何在 Windows 10、11 上恢复删除、未保存或覆盖的 Excel 文件?

我们中的大多数人可能都经历过其中一种情况——关闭电源时未保存 Excel 文件或误点击“不要保存”,不小心删除了重要的 Excel 文件,或覆盖了 Excel 文件而未保存原始副本。在遇到这些情况时,我们都会为没有采取适当的措施而感到内疚&#xff…

计算机毕业设计----Springboot超市订单管理系统

项目介绍 该超市订单管理毕业设计基于jdk8版本开发,在部署时需要使用jdk8以上的版本。使用了目前流行的框架组合springbootmybatis的框架技术, 实现了供应商管理对供应商实现增删改查、订单管理对超市订单实现增删改查、用户管理等功能,适用…

都是取所有行的某列数据,这个array[:,2]和array[:,2:3]有什么不同呢

效果图 代码 import numpy as nplist [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25] ] array np.array(list) print(array) 输出: [[ 1 2 3 4 5][ 6 7 8 9 10][11 12 13 14 15][16 17 18 19 20][21 22 23 24 25]]a arr…

【上分日记】第369场周赛(分类讨论 + 数学 + 前缀和)

文章目录 前言正文1.3000. 对角线最长的矩形的面积2.3001. 捕获黑皇后需要的最少移动次数3.3002. 移除后集合的最多元素数3.3003. 执行操作后的最大分割数量 总结尾序 前言 终于考完试了,考了四天,也耽搁了四天,这就赶紧来补这场周赛的题了&a…

【Linux实用篇】项目部署 基于Shell脚本自动部署

目录 1. 项目部署 1.1 手动部署项目 1.2 基于Shell脚本自动部署 1.2.1 介绍 1.2.2 推送代码到远程 1.2.3 Git操作 1.2.4 Maven安装 1.2.5 Shell脚本准备 1.2.6 Linux权限 1.2.7 授权并执行脚本 1.2.8 设置静态IP 1. 项目部署 之前我们讲解Linux操作系统时&#xff0…

Dcoker构建部署Java项目过程

目录 前言 一、打包 二、Docker File文件编写 一个简单的Docker File文件 三、上传文件 四、构建镜像 五、运行 六、端口开放 前言 使用Dcoker构建部署Java项目,发布到服务器 一、打包 我这里打包的是item-service这个module,clean-cpmpile-pa…

uniapp 查找不到uview-ui文件怎么办?

用官方的方式总是报:文件查找失败:uview-ui at main.js 解决方案: 1.先安装uview-ui npm install uview-ui 下载成功是这样的: 而不是这样的: 这样的原因是你的项目里没有package.json包,先执行 npm …

Qt 调试系统输出报警声以及添加资源

文章目录 前言一、方法1 使用 Qsound1.添加都文件 直接报错2.解决这个错误 添加 QT multimedia3. 加入代码又遇到新的错误小结 二、第二种方法1.引入库2.添加资源2.1依次点击Qt--->Qt Resource File--->Choose2.2给资源文件起个名字,如:res&#…

【每日一题】构造限制重复的字符串

文章目录 Tag题目来源解题思路方法一:贪心空间复杂度: O ( ∑ ) O(\sum) O(∑)。 写在最后 Tag 【贪心】【字符串】【2024-01-13】 题目来源 2182. 构造限制重复的字符串 解题思路 方法一:贪心 思路 解题思想比较简单,利用贪…

【MySQL】:掌握SQL中DDL的数据库定义与操作

🎥 屿小夏 : 个人主页 🔥个人专栏 : MySQL从入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. SQL的分类二. DDL数据库操作2.1 查询所有数据库2.2 查询当前数据库2.3 创建数…

[足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-8 状态观测器设计 Linear Observer Design

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-Advanced控制理论 Ch04-8 状态观测器设计 Linear Observer Design