python基础笔记(三)_Matplotlib基础语法

2023-11-16

图表绘制工具:Matplotlib

概念

  • 一个python版的matlab绘图接口
  • 以2D为主
  • 支持python、numpy、pandas基本数据结构
  • 有较丰富的图表库

图表窗口

  • plt.show() : 直接生成图表
  • % matplotlib inline : 魔法函数(常用)==》魔法函数,不需要 plt.show() 
  • % matplotlib notebook : 弹出可交互的matplotlib窗口
  • % matplotlib qt5 : 弹出matplotlib控制台

图表基本元素

  • figsize:创建图表窗口,设置窗口大小
  • plt.title('test'):设置图名
  • plt.xlabel('Plot Number'):x轴标签
  • plt.ylabel('Important var'):y轴标签
  • plt.legend(loc = 'best'):显示图例,loc表示位置;loc : 数字从0到10 loc = 0-10
  • plt.xlim([0,12]):x轴边界
  • plt.ylim([0,1.5]):y轴边界
  • plt.xticks(range(10)):设置x刻度
  • plt.yticks([0,0.2,0.4,0.6,0.8,1.0,1.2]):设置y刻度
  • fig.set_xticklabels('%.1f' %i for i in range(10)):x轴刻度标签
  • fig.set_yticklabels('%.2f' %i for i in [0,0.2,0.4,0.6,0.8,1.0,1.2]):y轴刻度标签
  • 网格设置 :网格设置 : plt.grid(True,color='gray',linewidth='0.5',axis='both')
    • True : 显示网格
    • linestyle : 线型
    • color : 颜色
    • linewidth : 宽度
    • axis:x,y,both : 显示x/y/两者的格网
  • 显示刻度 : plt.tick_params(bottom='on',top='off',left='on',right='off')  
  • 刻度的方向 : in/out/inout
    • matplotlib.rcParams['xtick.direction'] = 'in'
    • matplotlib.rcParams['ytick.direction'] = 'inout'
  • 坐标轴可见性
    • plt.axis('off') : 关闭坐标轴
    • frame.axes.get_xaxis().set_visible(False) : x轴不可见(True/False)
    • frame.axes.get_yaxis().set_visible(False) : y轴不可见(True/False)

图表样式参数

  • linestyle参数
    • 表示整体线型的样式
      • '-'       solid line style
      • '--'      dashed line style
      • '-.'      dash-dot line style
      • ':'       dotted line style
  • marker参数
    • 表示具体的单个单个点的样式
  • color参数
    • color
      • red-r
      • green-g
      • black-k
      • blue-b
      • yellow-y
    • colormap : 色板
      • 各类颜色首字母大写,尾部加s
      • 春夏秋冬海洋,字母小写
      • 各类色板后加 _r,表示颜色反转
  • style参数
    • 可以包含linestyle,marker,color
    • 三者样式写于一个字符串内
  • 整体风格样式
    • 导入模块 ; import matplotlib.style as psl
    • 查看样式列表 : print(plt.style.available)
    • 一旦选用样式后,所有图表都会有样式,重启后方可关掉

刻度、注解和图表输出

  • 刻度
    • 导入模块:from matplotlib.ticker import MultipleLocator, FormatStrFormatter
    • ax = plt.subplot(111) #注意:一般都在ax中设置,不在plot中设置
    • 刻度参数设置
      • 将x主刻度标签设置为10的倍数 : xmajorLocator = MultipleLocator(10)
      • 设置x轴标签文本的格式 : xmajorFormatter = FormatStrFormatter('%.0f')
      • 将x轴次刻度标签设置为5的倍数 : xminorLocator = MultipleLocator(5)
      • 将y轴主刻度标签设置为0.5的倍数 : ymajorLocator = MultipleLocator(0.5)
      • 设置y轴标签文本的格式 : ymajorFormatter = FormatStrFormatter('%.1f')
      • 将此y轴次刻度标签设置为0.1的倍数 : yminorLocator = MultipleLocator(0.1)
    • 设置主次刻度
      • 设置x轴主刻度 : ax.xaxis.set_major_locator(xmajorLocator)
      • 设置x轴标签文本格式 : ax.xaxis.set_major_formatter(xmajorFormatter)
      • 设置x轴次刻度 : ax.xaxis.set_minor_locator(xminorLocator)
      • 设置y轴主刻度 : ax.yaxis.set_major_locator(ymajorLocator)
      • 设置y轴标签文本格式 : ax.yaxis.set_major_formatter(ymajorFormatter)
      • 设置y轴次刻度 : ax.yaxis.set_minor_locator(yminorLocator)
    • 使用主次刻度
      • x坐标轴的网格使用主刻度 : ax.xaxis.grid(True, which='both')
      • y坐标轴的网格使用次刻度 : ax.yaxis.grid(True, which='minor')
    • 删除坐标轴刻度显示
      • ax.xaxis.set_major_formatter(plt.NullFormatter())
      • ax.yaxis.set_major_locator(plt.NullLocator())
  • 注解
    • plt.text(4,1,'hahaha',fontsize=10)
    • 注解 → 横坐标,纵坐标,注解字符串
  • 图表输出
    • plt.savefig('pic.png',dpi=800,bbox_inches = 'tight',facecolor = 'r',edgecolor = 'r')
    • dpi表示分辨率,越大越清晰;'tight',表示删除多余空白;facecolor 主体颜色;edgecolor 轮廓颜色

子图

  • 概念
    • 在matplotlib中,整个图像为一个Figure对象
    • 在Figure对象中可以包含一个或者多个Axes对象
    • 每个Axes(ax)对象都是一个拥有自己坐标系统的绘图区域
  • 创建及调整
    • fig1 = plt.figure(num=1,figsize=(8,6)) 绘图对象;num 表示图表序号
    • 创建方法一:先建立子图然后填充图表
      • 先创建图表figure : fig = plt.figure(figsize=(20,12),facecolor = 'gray')
      • 添加子图 : ax1 = fig.add_subplot(2,2,1);(2,2,1)代表创建2*2的矩阵表格,然后选择第一个,顺序是从左到右从上到下
      • 绘制图表 : 绘制到最后一个子图 ax1.plot(df)
    • 创建方法二:plt.subplots(返回numpy数组)
      • 创建多个子图 : fig,axes = plt.subplots(2,3,figsize=(10,8))
      • 根据索引确定子图 : ax1 = axes[0,2]
      • 填充子图 : ax1.plot(ts)
      • 未填充子图保持空白,但有轮廓
    • 创建方法三:多系列图,分别绘制
      • plt.plot(subplots=True,layout=(2,3))
      • layout设置布局矩阵,按顺序填充
      • subplots为True表示绘制子图
    • 调整
      • sharex,sharey:是否共享x,y刻度(True/False)
      • plt.subplots_adjust(wspace=0,hspace=0) :wspace,hspace:用于控制宽度和高度的百分比

基本图表绘制

  • 图表生成
    • Series生成图表
    • DataFrame生成图表
    • 参数说明
      • Series.plot():series的index为横坐标,value为纵坐标
      • kind → line,bar,barh...(折线图,柱状图,柱状图-横...)
      • label → 图例标签,Dataframe格式以列名为label
      • style → 风格字符串,这里包括了linestyle(-),marker(.),color(g)
      • color → 颜色,有color指定时候,以color颜色为准
      • alpha → 透明度,0-1
      • use_index → 将索引用为刻度标签,默认为True
      • rot → 旋转刻度标签,0-360
      • grid → 显示网格,一般直接用plt.grid
      • xlim,ylim → x,y轴界限
      • xticks,yticks → x,y轴刻度值
      • figsize → 图像大小
      • title → 图名
      • legend → 是否显示图例,一般直接用plt.legend()
      • ax  选择子图
      • subplots → 是否将各个列绘制到不同图表,默认False
  • 柱状图
    • 单系列(Series);plt.plot(kind='bar/barh')
    • 多系列(DataFrame);颜色采用 colormap(色板)
    • plt.bar(x,y,facecolor='yellowgreen',edgecolor='white',width = 1,yerr=0.1*y)
      • x,y参数:x,y值
      • width:宽度比例
      • facecolor柱状图里填充的颜色
      • edgecolor是边框的颜色
      • xerr/yerr :x/y方向error bar
      • plt.text() 添加柱状图上的值,用zip函数,for遍历
  • 堆叠图
    • stacked=True 参数设置
  • 外嵌图表
    • 柱状图外添加表格 plt.table()
      • cellText:表格文本 (不包含标签和索引)
      • cellLoc:cell内文本对齐位置(center,left,right)
      • rowLabels:行标签(一般为索引)
      • colLabels:列标签(一般为标签)
      • rowLoc:行标签对齐位置(right,left,center)
      • loc:表格位置 → left,right,top,bottom(相对于图的位置)
      • plt.xticks([]) : 不显示x轴标注
  • 面积图
    • 创建方法
      • Series.plot.area()
      • DataFrame.plot.area()
    • 注意事项
      • stacked:是否堆叠,默认情况下,区域图被堆叠
      • 为了产生堆积面积图,每列必须是正值或全部负值
      • 当数据有NaN时候,自动填充0,所以需要清洗掉缺失值
  • 填图
    • axes.fill(x,y)或者plt.fill(x,y,ax=axes)
      • axes.legend() 加载图例
      • axes.grid() 加载网格
    • axes.fill_between(x,y1,y2) 填充两个函数之间的区域
  • 饼图
    • plt.pie()绘图
      • plt.axis('equal')   # 保证长宽相等
      • 第一个参数:数据
      • explode:指定每部分的偏移量(以列表传入)
      • labels:标签(一般为数据索引)
      • colors:颜色(以列表传入)
      • autopct:饼图上的数据标签显示方式(如 '%.2f %%')
      • pctdistance:每个饼切片的中心和通过autopct生成的文本开始之间的比例 0.6
      • labeldistance:被画饼标记的直径,默认值:1.1
      • shadow:阴影 True
      • startangle:开始角度
      • radius:半径
      • frame:图框 False
      • counterclock:指定指针方向,顺时针或者逆时针
  • 直方图
    • plt.hist()
      • x : 数据源
      • bins:箱子的宽度(个数)
      • normed :标准化 (已换为density)
      • histtype 风格,bar,barstacked,step,stepfilled
      • orientation 水平还是垂直{‘horizontal’, ‘vertical’}
      • align : {‘left’,‘mid’, ‘right’}, optional(对齐方式)
    • 密度图;s.plot(kind = 'kde')
    • 堆叠直方图;添加参数 stacked
  • 散点图
    • plt.scatter(x, y)
      • s:散点的大小
      • cmap:colormap
      • c = y ,相匹配的坐标列
      • marker : 点的样式
    • pd.plottong.scatter_matrix()散点矩阵
      • diagonal:({‘hist’, ‘kde’}),必须且只能在{‘hist’, ‘kde’}中选择1个 → 每个指标的频率图
  • 极坐标图
    • 概念
      • 由角度和距离构成
      • 调用subplot()创建子图时通过设置projection='polar',便可创建一个极坐标子图
      • 然后调用plot()在极坐标子图中绘图
        • ax1 = plt.subplot(121,projection='polar')
        • ax = fig.add_subplot(111,polar=True)
    • 参数
      • 参数1为角度(弧度制)
      • 参数2为value
      • lw → 线宽
      • set_theta_direction():坐标轴正方向,默认逆时针1
      • set_thetagrids():设置极坐标角度网格线显示及标签 → 网格和标签数量一致
      • set_rgrids():设置极径网格线显示,其中参数必须是正数
      • set_theta_offset():设置角度偏移,逆时针,弧度制
      • set_rlim():设置显示的极径范围
      • set_rmax():设置显示的极径最大值
      • set_rticks():设置极径网格线的显示范围
    • 雷达图
      • 极坐标的折线图/填图 - plt.plot() ----未闭合
      • 极坐标的折线图/填图 - plt.polar() ----首尾闭合
    • 极轴图 - 极坐标的柱状图
  • 箱型图
    • 基本概念
      • 是一种用作显示一组数据分散情况资料的统计图
      • 包含一组数据的:最大值、最小值、中位数、上四分位数(Q3)、下四分位数(Q1)、异常值
      • 中位数 → 一组数据平均分成两份,中间的数
      • 下四分位数Q1 → 是将序列平均分成四份,计算(n+1)/4与(n-1)/4两种,一般使用(n+1)/4
      • 上四分位数Q3 → 是将序列平均分成四份,计算(1+n)/4*3=6.75
      • 内限 → 最大值区间Q3+1.5IQR,最小值区间Q1-1.5IQR (IQR=Q3-Q1)
      • 外限 → 最大值区间Q3+3IQR,最小值区间Q1-3IQR (IQR=Q3-Q1)
      • 异常值 :内限之外 - 中度异常,外限之外 - 极度异常
    • 绘制
      • plt.plot.box()绘制
        • color : 样式填充(着色),传入字典序列
          • boxes → 箱线
          • whiskers → 分位数与error bar横线之间竖线的颜色
          • medians → 中位数线颜色
          • caps → error bar横线颜色
        • vert:是否垂直,默认True
        • position:箱型图占位,传入列表
      • plt.boxplot()绘制
        • sym 异常点形状,参考marker
        • vert = True 是否垂直
        • whis = 1.5, IQR,默认1.5
        • patch_artist = True, 上下四分位框内是否填充,True为填充
        • meanline = True,showmeans = True, 是否有均值线及其形状
        • showbox = True, 是否显示箱线
        • showcaps = True, 是否显示边缘线
        • showfliers = True, 是否显示异常值
        • notch = False, 中间箱体是否缺口
        • return_type = 'dict')    返回类型为字典 
          • boxes, 箱线
          • medians, 中位值的横线,
          • whiskers, 从box到error bar之间的竖线.
          • fliers, 异常值
          • caps, error bar横线
          • means, 均值的横线,

表格处理

  • 表格样式
    • 按元素处理样式:df.style.applymap(def);自动调用其中的函数
    • 按行/列处理样式:df.style.apply(def,参数设置)
      • axis:0为列,1为行,默认为0
      • subset:索引
    • 样式索引、切片
      • df.style.apply(highlight_max, axis = 1, subset = pd.IndexSlice[2:5,['b', 'd']])
      • 通过pd.IndexSlice[]调用切片
      • 也可:df[2:5].style.apply(highlight_max, subset = ['b', 'd']) → 先索引行再做样式
  • 表格显示控制 df.style.format()
    • 按照百分数显示  df.head().style.format('{:.2%}')
    • 显示小数点数   df.head().style.format("{:.4f}")
    • 显示正负数   df.head().style.format("{:+.2f}")
    • 分列显示  df.head().style.format({'b':"{:.2%}", 'c':"{:+.3f}", 'd':"{:.3f}"})
  • 表格样式调用
    • 定位空值   df.style.highlight_null(null_color='red')
    • 色彩映射  df.style.background_gradient(cmap='Greens',axis =1,low=0,high=1)
      • cmap:颜色
      • axis:映射参考,0为行,1以列
    • 条形图  df.style.bar(subset=['A', 'B'], color='#d65f4f', width=100);width:最长长度在格子的占比
    • 分段式构建样式  df.style.bar(subset=['A', 'B'], color='#d65f5f', width=100).highlight_null(null_color='yellow')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python基础笔记(三)_Matplotlib基础语法 的相关文章

随机推荐

  • 软件ETest

    ETest简介 ETest是一款软件开发环境IDE 基于该IDE可以完成嵌入式系统测试软件的开发与部署 该产品是由凯云科技率先在行业内推出的国产自主可控半实物仿真测试开发平台 有效打破了国内该领域长期由进口软件LabView DSpace等
  • 冲牙器使用记录

    保护好牙齿才能品尝美食 可以买一款比较便宜的冲牙器先试试 价位在100 200即可 一般有高中低三档 先用最低档位体验2个星期 冲的时候 喷嘴就贴着牙齿 不然会水花四溅
  • 51汇编——矩阵键盘

    矩阵按键可以说是51单片机一个比较典型的输入型的外设 它可以让人与单片机更好的进行交互 这一小节打算写一个4X4的矩阵按键 至于2X8 3X4 3X3 这些类型的其实他们的原理都是一样的 可以仿4X4的来写 矩阵按键扫描原理 这里使用的是8
  • 华为OD七日集训第5期 - 按算法分类,由易到难,循序渐进,玩转OD

    目录 一 适合人群 二 本期训练时间 三 如何参加 四 7日集训第5期 五 精心挑选21道高频100分经典题目 作为入门 第1天 逻辑分析 第2天 双指针 第3天 滑动窗口 第4天 贪心算法 第5天 二分查找 第6天 分治递归 第7天 搜索
  • 关于AI和ChatGPT的使用,AI编程(AIGC),AI绘画(3)

    使用AI绘画要注意哪些问题 1 版权和知识产权 使用别人的AI模型进行绘画可能会侵犯其版权和知识产权 需遵守相关法律法规 2 数据隐私 在使用AI绘画应用时 可能需要提供个人图像或图片等数据 要谨慎保护数据隐私 防止被滥用 3 算法可解释性
  • 移动端适配方案的优缺点比较

    当我们说到适配方案的时候越来越多的人会潜意识的翻译成移动端适配方案 确实是这样 在移动端蓬勃发展的今天 移动端的适配显得尤为重要 PC应用的适配已经不是适配方案主要需要考虑的了 随着移动互联网的来临 追求移动端的完美展示才是王道 最近也在做
  • 什么是三目运算符?三目运算符怎么使用?

    1 什么是三目运算符 三目运算符又称为 三元运算符 和 条件运算符 在java C C python JavaScript PHP等编程语言中都有三目运算符 三目运算符的作用就是判断 可以理解为if条件判断的简化版 2 三目运算符的运算规则
  • SQL数据分析概念与基础命令

    Parch Posey 数据库 实体关系图 实体关系图 ERD 是查看数据库中数据的常用方式 下面是我们将用于 Parch Posey 数据库的 ERD 这些图可帮助你可视化正在分析的数据 包括 表的名称 每个表中的列 表配合工作的方式 你
  • 蓝色巨人——IBM公司

    蓝色巨人 IBM之所以被称为蓝色巨人是因为他蓝色的徽标 还有IBM的深蓝超级计算机在第二次人机大战中胜出 IBM是为数不多的在成功逃过数次经济危机 并在历次技术革命中成功转型的公司之一 虽然他是大型计算机制作商 但是他已经过气了 不过他确是
  • 搞懂Vision Transformer 原理和代码,看这篇技术综述就够了(三)

    点击蓝字 关注极市平台 作者丨科技猛兽 来源丨极市平台 审核丨邓富城 极市导读 本文为详细解读Vision Transformer的第三篇 主要解读了两篇关于Transformer在识别任务上的演进的文章 DeiT与VT 它们的共同特点是避
  • 代码查看工具_F12 - 开发者工具详解

    学习使用浏览器自带的 F12 网页开发者工具 可以帮助前端以及测试人员来快速定位调试分析问题 解决问题 一 如何调出开发者工具 在浏览器页面上 F12 键 笔记本电脑 Fn F12 右键选择 检查 N 快捷键 Ctrl Shift i 二
  • Qt 信号和槽的机制(逻辑清晰的来说清楚信号和槽,呕心沥血之作)

    Qt 信号和槽的机制 首先说声对不起 上次在PyQt5中写信号与槽 由于时间原因没有写完 有小伙伴留言说 希望把这章补全 所以 这是一篇迟来的文章 再次向大家说声抱歉 一 桌面程序的结构 Qt的使用场景 主要是应用于桌面程序来使用 不管你使
  • SpringCloud+mybatis+WeMagic Mapper注入失败 NPE空指针异常

    项目背景 Springcloud mybatis webMagic 获取百度热搜榜 搜狗热搜榜等热搜数据并存储到数据库中 使用Mybatis Generator自动生成Mapper后放置在Mapper文件夹 并添加了对应的注解支持 serv
  • 深度学习系列50:苹果m1芯片加速pytorch

    1 介绍 Apple的Metal Performance Shaders MPS 作为PyTorch的后端来加速GPU训练 MPS后端扩展了PyTorch框架 提供了在Mac上设置和运行操作的脚本和功能 MPS通过针对每个Metal GPU
  • 树莓派gpio接ttl转usb串口调试

    树莓派设置修改 以下教程只在树莓派3B 验证测试通过 其它版本未经测试仅供参考 1 gt 修改config txt enable uart 1 找到这行 将值改为1 dtoverlay pi3 miniuart bt 在config txt
  • uni-apph5 端获取当前位置坐标及地理位置逆解析

    1 uni app getLocation在浏览器端获取的地理位置坐标是你电脑里面ip地址位置的坐标 2 调用百度地图api逆解析地址对坐标解析详细地址 代码如下 经纬度 记得改成活的 测试用写死了 uni getLocation type
  • 详解 MySQL InnoDB 实现原理

    MySQL InnoDB 引擎现在广为使用 它提供了事务 行锁 日志等一系列特性 本文分析下 InnoDB 的内部实现机制 MySQL 版本为 5 7 24 操作系统为 Debian 9 1 InnoDB 架构 Innodb 架构图 Inn
  • Java基于Selenium动态抓取页面

    Java基于Selenium动态抓取页面 前情介绍 解决 思路 编码 解决过程中遇到的问题一 解决过程中遇到的问题二 总结 前情介绍 前段时间开发了一个功能 通过HttpClient访问某个页面 获取页面的全部html内容 之后通过抓取过来
  • 【Spring Boot 集成应用】 OAUTH2统一认证单点登录中的各种模式说明

    1 OAUTH2统一认证介绍 OAuth 2 0 是一个行业的标准授权协议 OAuth 2 0 专注于简化客户端开发人员 同时为 Web 应用程序 桌面应用程序 手机等各种设备接入提供特定的授权流程 2 传统登陆认证 传统登陆方式是在每个服
  • python基础笔记(三)_Matplotlib基础语法

    图表绘制工具 Matplotlib 概念 一个python版的matlab绘图接口 以2D为主 支持python numpy pandas基本数据结构 有较丰富的图表库 图表窗口 plt show 直接生成图表 matplotlib inl