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…

LeetCode1371. Find the Longest Substring Containing Vowels in Even Counts

文章目录 一、题目二、题解 一、题目 Given the string s, return the size of the longest substring containing each vowel an even number of times. That is, ‘a’, ‘e’, ‘i’, ‘o’, and ‘u’ must appear an even number of times. Example 1: Input: s “ele…

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

鸿蒙HarmonyOS-SDK管理使用指南

鸿蒙HarmonyOS-SDK管理使用指南 文章目录 鸿蒙HarmonyOS-SDK管理使用指南sdkmgr使用指导查看SDK组件安装组件卸载组件查看sdkmgr版本查看sdkmgr帮助options选项说明 ohsdkmgr使用指导查看SDK组件安装组件卸载组件查看ohsdkmgr版本查看ohsdkmgr帮助options选项说明 sdkmgr使用指…

红队专题-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…

RT-Thread I/O设备驱动接口

创建和注册I/O设备 驱动层负责创建设备实例,并注册到I/O设备管理器中,可以通过静态申明的方式创建设备实例,也可以用下面的接口进行动态创建: rt_device_t rt_device_create(int type, int attach_size);type:设备类…

伴鱼实时数仓建设案例

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

什么企业可以办理CS?

(一)具有独立企业法人地位,从事信息系统建设和服务业务1年以上; (二)社会信誉良好,有良好的资信和公众形象,有良好的知识产权保护意识,近三年无触犯国家法律法规的行为&…

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

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

SpringSecurity入门demo(三)多用户身份认证

WebSecurityConfigurerAdapter配置文件在 configure(AuthenticationManagerBuilder auth) 方法中完成身份认证。前面的demo都只有一个用户,security中使用UserDetailsService做为用户数据源 ,所以可以实现UserDetailsService 接口来自定义用户。实现方…

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

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

第二十二章 调用Callout Library函数 - 使用过程索引进行测试

文章目录 第二十二章 调用Callout Library函数 - 使用过程索引进行测试方法 GetGraph() 使用进程索引进行测试使用进程索引测试新版本的“inputlibrary.dll” 第二十二章 调用Callout Library函数 - 使用过程索引进行测试 方法 GetGraph() Method GetGraph(loopsize As %Inte…

Python 装饰器可以将代码减少一半

一、说明 这里,我将与您分享一些令人惊叹的 Python 装饰器,它们可以将您的代码减少一半。听起来好得令人难以置信,对吧?好吧,让我向您展示它们是如何工作的以及为什么应该在项目中使用它们。 二、什么是 Python 装饰器…

都是取所有行的某列数据,这个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…

想要安利给所有人的开发工具

Visual Studio Code - 一个轻量级且功能丰富的代码编辑器,支持多种编程语言,拥有强大的插件和工具集。 Git - 一个分布式版本控制系统,可以帮助开发团队协作、跟踪代码变更和管理代码库。 Postman - 一个用于API开发和测试的工具&#xff0…