Python大数据可视化方法与实践课件 第6章 增强可视化效果_第1页
Python大数据可视化方法与实践课件 第6章 增强可视化效果_第2页
Python大数据可视化方法与实践课件 第6章 增强可视化效果_第3页
Python大数据可视化方法与实践课件 第6章 增强可视化效果_第4页
Python大数据可视化方法与实践课件 第6章 增强可视化效果_第5页
已阅读5页,还剩121页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章增强可视化效果章节简介本章主要介绍如何通过画布划分和坐标轴设计,增强数据图表的整体表达效果。我们将学习如何对画布进行均匀与非均匀划分,并在同一图表中展示多个子图。此外,还将探讨坐标轴与刻度的多样化选择及调整,以提升图表的可读性和美观性。本章还将深入讲解共享坐标轴的常见应用及其实现方法,以减少多图比较中的冗余并突出数据关系。通过Python编程实践,读者将掌握相关技巧,理解这些可视化方法在不同分析任务中的实际应用价值。6.1画布划分第6章·增强可视化效果多维度图表组合的价值多维度的图表组合能够让可视化的结果更加全面、直观。全面性多张图表组合展示,覆盖更多维度信息直观性并排对比,结论一目了然灵活性支持相同大小或主副图等多种组合方式主图/副图的组合方式画布划分支持两种典型组合:相同大小图表对多种参数实验结果进行展示,各图地位平等主图+副图由主图、副图对不同维度属性进行分析的论证相同大小图表组合的用途这种组合既可以是相同大小的图表对多种参数实验结果的展示,也可以是由主图、副图对不同维度属性进行分析的论证。多参数对比同一实验在不同参数下的结果并排呈现均匀布局各子图占据相同面积,视觉权重一致实验展示适合呈现系列实验或批量对比分析场景主图副图论证不同维度属性主图承载核心数据,占据更大画幅副图提供补充视角,辅助说明细节二者结合,完整呈现多维分析结论主图核心趋势/全局视图副图细节放大/辅助维度图6-1:主副图组合示例该图展示了在同一画布中,主图与副图如何协同呈现多维度分析结果,是画布划分的典型应用案例。6.1.1均匀划分通过运用Matplotlib库中的相关函数和方法,可以组合多张小图并放在一张大图内进行显示。subplot函数语法函数签名matplotlib.pyplot.subplot(nrows,ncols,index)可用于指定子图位置。nrows网格行数ncols网格列数index当前子图位置编号nrows、ncols、index含义参数nrows、ncols、index表示在包含nrows行ncols列的网格中,当前子图占据第index个位置。nrows(行数)ncols(列数)index(位置)三个参数共同确定子图在整个画布网格中的精确位置。index计数规则计数方向index自最左上角向右下角从1开始计数。从左至右:第1行依次为1、2、3…从上到下:第1行结束后进入第2行编号从1开始,不是0示例:plt.subplot(2,2,1)对图6-2中左上角第一个子图进行绘制,可以通过plt.subplot(2,2,1)定位到子图1的位置。plt.subplot(2,2,1)2行nrows=22列ncols=21号位index=1即主图中包含2行2列网格,当前定位的子图为1号子图。子图排序方式子图排序方式为从左至右,从上到下。pos参数引入还可以利用参数pos其作用与nrows、ncols、index相同。plt.subplot(pos)等价关系pos是nrows、ncols、index的紧凑写法,功能完全一致使用场景网格规模较小时,pos写法更简洁pos是3位整数pos是一个3位的整数,3位数分别代表行数nrows、列数ncols以及索引index。百位数nrows(行数)十位数ncols(列数)个位数index(位置索引)pos使用限制⚠️注意事项使用pos时,3个数字均需小于10。合法nrows、ncols、index均为个位数(1–9)不合法任意一个参数≥10时,必须改用逗号分隔形式等效示例:subplot(2,3,1)与subplot(231)subplot(2,3,1)与subplot(231)是等效的。标准写法plt.subplot(2,3,1)2行3列,第1号子图pos简写plt.subplot(231)效果完全相同,更简洁示例:plt.subplot(222)plt.subplot(222)定位到第二行第二列的子图。第一列左第一行低第二列右第二行高右下:未选中子图左下:未选中子图右上:目标子图左上:未选中子图pos写法222即:2行、2列、第2号位→右上角子图。定位后绘制子图核心流程01定位子图调用subplot()指定位置02绘制内容调用plt.plot()等绘图方法03重复操作对每个子图依次定位并绘制说明定位子图后即可对子图进行绘制,绘制方法与前面讲解的相同。subplot()只负责"选中"当前子图,后续所有绘图操作均作用于该子图。图6-2:均匀划分的子图该图展示了2行2列共4个等大小子图的标准均匀划分效果,各子图面积相同,依次编号1–4。均匀划分代码:总览均匀划分子图代码如下。本示例在2×2网格中分别绘制4条不同斜率的折线。导入库importmatplotlib定位+绘制subplot→plot×4布局优化tight_layout+show代码①导入库importmatplotlib.pyplotasplt导入Matplotlib的pyplot模块,并约定别名plt,后续所有绘图操作均通过plt调用。代码②定位子图1plt.subplot(2,2,1)将画布划分为2行2列,并将当前绘图焦点切换到第1号子图(左上角)。代码③在子图1中绘制折线plt.plot([0,1],[0,1])在当前激活的子图(子图1)中,绘制从(0,0)到(1,1)的折线,斜率为1。代码④定位子图2(pos写法)plt.subplot(222)使用pos简写:2行2列第2号位,定位到右上角子图。与plt.subplot(2,2,2)完全等效。代码⑤在子图2中绘制折线plt.plot([0,1],[0,2])在子图2中绘制从(0,0)到(1,2)的折线,斜率为2,比子图1更陡。代码⑥定位子图3plt.subplot(223)定位到2行2列网格中的第3号位,即左下角子图。代码⑦在子图3中绘制折线plt.plot([0,1],[0,3])在子图3中绘制从(0,0)到(1,3)的折线,斜率为3。代码⑧定位子图4plt.subplot(224)定位到第4号位,即右下角子图,完成2×2网格的最后一个位置。代码⑨在子图4中绘制折线plt.plot([0,1],[0,4])在子图4中绘制从(0,0)到(1,4)的折线,斜率为4,4个子图斜率依次递增。代码⑩自动调整布局plt.tight_layout()自动调整各子图之间的间距,防止标签或标题重叠,使整体布局更加美观整洁。代码⑪显示图表plt.show()渲染并弹出图形窗口,展示最终的2×2均匀划分子图效果。6.1.1均匀划分·要点回顾1函数语法matplotlib.pyplot.subplot(nrows,ncols,index)指定子图位置2index计数自最左上角向右下角从1开始计数;排序从左至右,从上到下3pos简写pos是3位整数,3个数字均需小于10;subplot(2,3,1)与subplot(231)等效4绘制方式定位子图后,绘制方法与前面讲解的相同6.1.2非均匀划分当某一子图需要突出显示时,可将其放大,实现主次分明的画布布局。非均匀划分的适用场景当子图中某一个图表包含的数据更多、信息量更大,或单纯地希望其突出显示某个重要图表时,可以将某一个或几个子图放大。数据量更大某子图承载的数据点或系列更多,需要更大显示区域重要图表突出核心结论图表需要视觉上的优先级,通过放大实现主副图分工大图为主图,小图为辅助说明,层次清晰图6-2:主图效果如果把第1个子图放在第一行,剩下的3个子图放在第二行,那么第1个子图就会呈现出主图的效果,其余3个子图作为辅助说明。这正是非均匀划分的典型用法:突出核心图表,辅图提供补充视角。图6-3:主图+辅助说明效果图6-3第1个子图呈现出主图效果,其余3个子图可作辅助说明。plt.subplot(2,1,1):分2行1列plt.subplot(2,1,1)使用plt.subplot(2,1,1)将整个图像窗口分为2行1列,当前位置为1。分割画布将画布分为2行1列。设置当前位置将当前子图位置设为第1行。在第1个位置创建子图plt.plot([0,1],[0,1])通过plt.plot([0,1],[0,1])在第1个位置创建一个子图,此时该子图占据画布上半部分全部宽度。plt.subplot(2,3,4):重新划分画布plt.subplot(2,3,4)使用plt.subplot(2,3,4)重新将整个图像窗口分为2行3列,当前位置为4。注意:每次调用subplot()都是针对整个画布重新划分,而非针对剩余区域。在第4个位置创建子图plt.plot([0,1],[0,2])通过plt.plot([0,1],[0,2])在第4个位置创建一个子图。在2×3网格中,第4号位位于第2行第1列(左下角)。重要结论:划分针对整个画布可以看出对于画布的划分是针对整个画布的,而不是针对画布的剩余部分。每次重新划分subplot()每次调用都重新定义整个画布的网格结构不累积操作不会在上次划分的基础上继续细分剩余区域网格的作用:更清晰的对比在线条或者图表下添加网格会使可视化效果更加清晰,让用户通过肉眼即可轻松看出图片的不同,并能够帮助用户比较图表中细微的差异。grid()函数matplotlib.pyplot.grid()可以使用matplotlib.pyplot.grid()来设置网格的可见度、密度和风格。可见度控制网格是否显示(True/False)密度控制网格线的疏密程度风格控制线型、颜色等视觉样式网格划分的另一优势:子图大小变化网格划分的另一个优势在于子图可以覆盖不同数量的网格,从而实现图片的大小变化。生成不均匀子图为子图分配格跨度定义虚拟网格多子图展示提供更多选择灵活布局子图可跨越任意数量的逻辑网格单元自定义尺寸不同子图可拥有完全不同的显示面积突出重点通过尺寸差异引导视线,强化信息层次subplot2grid:灵活定制布局pyplot.subplot2grid()可通过pyplot.subplot2grid()函数灵活定制画布子图布局。网格≠可见格子线逻辑划分方式此处网格并非实际可见的格子线,而是用于确定画布划分行列数的逻辑划分方式。网格是虚拟的概念框架,不会在最终图表中显示为线条。在虚拟网格中放置子图可以在这些虚拟网格中放置子图,通过设置rowspan和colspan参数实现子图跨行跨列的非均匀排布。rowspan/colspan:跨行跨列rowspan子图跨越的行数,实现垂直方向上的放大colspan子图跨越的列数,实现水平方向上的放大通过组合使用rowspan和colspan,可以实现任意尺寸的子图非均匀排布。subplot2grid基本调用格式subplot2grid(shape,loc,rowspan,colspan)该函数基本调用格式为subplot2grid(shape,loc,rowspan,colspan),参数说明如下。参数shape:行列数shape=(rows,cols)shape为(rows,cols)格式的元组,指定画布划分的行列数。例如shape=(3,3)表示将画布逻辑划分为3行3列的虚拟网格。参数loc:子图起始位置loc=(row,col)loc表示(row,col)坐标,用于指定子图起始位置,行列编号从0开始计数。⚠️与subplot()的index不同,subplot2grid的行列编号从0开始,不是1。参数rowspan/colspanrowspan/colspan确定子图跨越的行数或列数。1默认值为1如果没有明确指明参数colspan和rowspan的值,默认跨度为12跨多格放大设置大于1的值,子图将覆盖更多网格单元,面积相应增大图6-4:非均匀划分示意图利用subplot2grid()函数可实现非均匀划分,图中展示了各子图在3×3逻辑网格中的跨行跨列排布方式。图6-4解读:3行3列逻辑划分在图6-4中,以最小尺寸的子图(左下1、左下2)作为单位,画布划分为3行3列。3×3是虚拟逻辑网格,并非每个格子都对应一个独立子图。默认跨度为1如果没有明确指明参数colspan和rowspan的值,默认跨度为1。rowspan默认子图仅占1行高度colspan默认子图仅占1列宽度最小单元默认即为一个逻辑网格单元大小子图1定位示例matplotlib.pyplot.subplot2grid((3,3),(0,0),colspan=3)子图1的定位即为上述代码:从(0,0)起始,列跨度为3,占满第0行全部宽度。子图2定位示例matplotlib.pyplot.subplot2grid((3,3),(1,0),colspan=2)下面来创建第2个子图,使用上述函数从第1行第0列开始作图,列的跨度为2。后续子图以此类推后续子图以此类推。01确定网格规模通过shape参数设定整体逻辑网格的行列数02指定起始位置通过loc参数(从0计数)定位子图左上角03设置跨越范围通过rowspan/colspan控制子图占据的网格单元数量04绘制内容使用plt.plot()等方法在当前子图中绘制图形6.1.2非均匀划分·要点回顾核心函数pyplot.subplot2grid()用于灵活定制非均匀画布布局。网格概念基于虚拟逻辑网格,并非实际可见的格子线。shape参数shape=(rows,cols)定义整体虚拟网格的行列数。loc参数loc=(row,col)指定子图起始位置,行列编号从0开始。跨度参数rowspan和colspan确定子图跨越的行/列数,默认为1。6.2坐标轴与刻度坐标轴与刻度坐标轴与刻度为什么重要?坐标轴作为可视化图形的重要组成部分,对可视化效果起着不容忽视的作用。样式线型、粗细、边框颜色轴线与刻度配色刻度主/次刻度控制标签文字长度与旋转需要考虑的坐标轴属性一个好的可视化图形,需要考虑坐标轴的样式、颜色、刻度、标签等多种属性。样式与颜色影响整体视觉风格刻度间距决定数据精度表达标签文字传递轴含义与单位本节目标本节将展示常用的坐标轴样式及其实现方法。认识坐标轴理解轴线、范围与方向刻度与标签设置刻度样式与文本多折线与共享轴绘制多线并共享坐标轴通过本节学习,能够灵活控制Matplotlib图表中坐标轴的视觉表现,提升可视化作品的专业度。6.2.1颜色与标签坐标轴标签的清晰度直接影响图表的可读性。本小节聚焦刻度标签的常见问题与解决方案。简短标签春夏秋冬,表达清晰长标签问题菜品名称重叠,不易阅读倾斜解决设置旋转角度,优化显示图6-6(a):标签清晰示例图6-6(a)为在3.1节实现的柱形图,x轴标签"春""夏""秋""冬"表达清晰。简短的单字标签不会产生重叠,是理想的刻度标签形式。标签因过长产生重叠,需进一步处理。图6-6(b):标签过长导致重叠然而并不是所有的刻度标签都可以通过这种简单的方式表达。问题根源图中因菜品名称标签过长而导致文字重叠,不易阅读。典型场景菜品名、日期字符串等长文本标签均易出现此问题。解决方案:设置文字倾斜角度当刻度标签文字过长时,可以通过设置文字的倾斜角度来解决,如图6-7所示。在新闻、报纸中表达与日期相关的标签时,我们经常能看到这种调整。旋转角度通常设置为30°–80°,兼顾可读性与空间利用。日期标签的常见调整在新闻、报纸中表达与日期相关的标签时,我们经常能看到这种调整。为了对刻度进行强调,还可以设置相关的图示修饰刻度点。旋转标签通过rotation参数倾斜标签文字,避免重叠修饰刻度点设置刻度线颜色、长度、宽度,强调关键刻度位置日期场景年季度标签字符较长,旋转显示是标准处理方式强调刻度:修饰刻度点为了对刻度进行强调,还可以设置相关的图示修饰刻度点。set_color()设置刻度线颜色set_markersize()设置刻度线长度set_markeredgewidth()设置刻度线宽度图6-7公司季度销售总值折线图该折线图展示2012—2017年某公司季度销售数据,x轴为时间,y轴为销售业绩(万元),并包含旋转刻度标签与修饰刻度点效果。数据源:2012—2017年季度销售数据下面利用2012—2017年某公司季度销售数据绘制折线图。该折线图的数据源为data.npz。数据范围2012—2017年,按季度划分文件格式data.npz(NumPy打包文件).npy文件与数组名.npy文件是NumPy保存数组的二进制文件,文件名对应数组名。文件后缀.npy存储内容单个NumPy数组命名规则文件名即为数组名.npz文件:打包文件格式.npz文件是包含多个.npy文件的打包文件。.npy单数组二进制文件.npz多个.npy文件的压缩打包访问方式通过数组名作为关键字索引load()识别.npz并返回类似字典对象NumPy的load()函数能够自动识别.npz文件,并且返回一个类似于字典的对象,可以通过数组名作为关键字获取数组的内容。类似字典的对象支持data['数组名']语法直接提取目标数组,使用方便直观。name.npy与values.npy分别存放什么文件data.npz包含两个二进制数组文件name.npy和values.npy,name存放表头数据,values存放记录数据。name.npy存放表头数据(列名)values.npy存放记录数据(具体数值)图6-8data.npz数据集数据集展示了name与values两个数组的结构,name为表头,values为多列数值记录,包含时间、各品类销售额等字段。load()读取并提取values数组下面通过NumPy提供的load()方法读取数据集,并提取values数组。data=np.load('data.npz')values=data['values']#提取其中的values数组两行代码完成数据读取与提取,data['values']利用字典式访问获取记录数组。获取x轴:year_seasons列表推导式获取"时间"列作为x轴的代码为:year_seasons=[values[i][1]foriinrange(len(values))]通过列表推导式遍历values数组,提取每行索引为1的元素(即"时间"列),构成x轴刻度标签列表。获取y轴:random_y0(厨房电器)获取销售数据作为y轴的代码如下。random_y0=values[:,3]#厨房电器销售数据values[:,3]使用NumPy切片语法,提取所有行第3列,对应厨房电器的销售数据。获取y轴:random_y1(空调与电视)random_y1=values[:,4]#空调与电视销售数据提取第4列,对应空调与电视品类的各季度销售业绩,作为第二条折线的数据源。获取y轴:random_y2(生活小家电)random_y2=values[:,5]#生活小家电销售数据提取第5列,对应生活小家电品类的各季度销售业绩,作为第三条折线的数据源。三列数据y0/y1/y2分别对应三条折线,共同绘制于同一图表中。subplots()返回值:Figure与Axes对象matplotlib.pyplot.subplots()的返回值是一个元组。这个元组包含一个Figure对象和Axes对象集合。Figure对象整幅图像的容器,管理图像级属性Axes对象集合包含所有子图的可操作坐标系对象fig变量的作用fig变量可以修改Figure层级(figure-level)的属性,或者将Figure保存成图片,如fig.savefig('temp.png')。修改图像属性背景色、尺寸等figure-level设置保存图片fig.savefig('temp.png')ax变量的作用ax变量中保存着所有子图的可操作Axes对象。保存子图引用ax中包含每个子图的Axes对象,可分别操作精确控制通过ax对象调用方法,设置标题、标签、刻度等等价写法(一):fig=plt.figure()fig,ax=plt.subplots()等价于如下代码:fig=plt.figure()当采用fig,ax=matplotlib.pyplot.subplots()这样的用法时,相当于把返回的元组解压成了fig和ax两个变量。等价写法(二):ax=fig.add_subplot(1,1,1)ax=fig.add_subplot(1,1,1)add_subplot(1,1,1)表示创建1行×1列的子图网格中第1个子图,与plt.subplots()在单子图场景下完全等价。rotation参数:设置刻度标签旋转角度通过Axes.set_xticklabels()方法中的参数rotation为x轴刻度标签设置旋转角度:ax1.set_xticklabels(year_seasons,rotation=80,fontsize=12)rotation=80将标签旋转80°,fontsize=12控制字号,两者协同提升长标签的可读性。get_ticklines():返回刻度线对象列表在Matplotlib库中,get_ticklines()是一个用于获取坐标轴刻度线对象的方法,它返回一个包含刻度线对象的列表,这些对象代表坐标轴上的主刻度线或次刻度线。get_ticklines()无直接参数,返回Line2D对象列表,可对每条刻度线逐一设置样式。可修改的刻度线属性get_ticklines()返回的Line2D对象支持以下属性修改:.set_color()设置刻度线颜色.set_markersize()设置刻度线长度.set_markeredgewidth()设置刻度线宽度多折线图绘制流程概述接下来绘制多折线图。首先通过fig,ax1=plt.subplots(figsize=(10,6))创建图像对象fig和坐标轴对象ax1。添加标签与保存绘制三条折线设置坐标轴刻度创建图像对象多折线图:设置刻度线与刻度标签刻度线设置forticklineinax1.xaxis.get_ticklines():tickline.set_color('r')#刻度线颜色:红色tickline.set_markeredgewidth(9)#刻度线宽度:9tickline.set_markersize(5)#刻度线长度:5刻度标签设置forticklabelinax1.get_xmajorticklabels():ticklabel.set_fontsize(12)#字体大小:12ticklabel.set_rotation(50)#旋转角度:50°"get_ticklines()":遍历x轴刻度线对象,逐一设置颜色、宽度与长度"get_xmajorticklabels()":获取主刻度标签,统一设置字号与旋转角度,避免长标签重叠多折线图:绘制三条折线+保存图片使用ax1.plot()方法绘制表示厨房电器、空调与电视、生活小家电销售数据的三条折线,添加坐标轴标签、标题、图例和y轴网格线。最后通过plt.savefig()将绘制结果保存为图片文件。多折线图实现代码如下。代码段1/10import与rcParams设置导入依赖库并配置中文字体与负号显示。importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']#指定中文字体plt.rcParams['axes.unicode_minus']=False#正常显示负号代码段2/10np.load+names/values提取读取.npz文件并分别提取names与values数组。data=np.load('data.npz')name=data['names']#提取其中的names数组values=data['values']#提取其中的values数组代码段3/10year_seasons+random_y0/y1/y2构建x轴时间列表与三条折线的y轴数据。#获取"时间"列作为x轴year_seasons=[values[i][1]foriinrange(len(values))]random_y0=values[:,3]#厨房电器销售数据random_y1=values[:,4]#空调与电视销售数据random_y2=values[:,5]#生活小家电销售数据代码段4/10fig,ax1=plt.subplots+x刻度位置创建图像与坐标轴对象,定义x轴刻度位置数组。fig,ax1=plt.subplots(figsize=(10,6))#绘制折线图x=np.arange(0,10,1)#x轴刻度位置代码段5/10ax1.plot第1条折线(厨房电器)绘制厨房电器销售折线,蓝色实线,数据点为正方形。ax1.plot(year_seasons,random_y0,'b-',label='厨房电器',marker='s')#marker='s',数据点的形状为正方形'b-',蓝色实线代码段6/10forticklineinax1.xaxis.get_ticklines()遍历x轴刻度线对象,设置颜色、宽度与长度。forticklineinax1.xaxis.get_ticklines():tickline.set_color('r')#刻度线颜色tickline.set_markeredgewidth(9)#刻度线宽度tickline.set_markersize(5)#刻度线长度代码段7/10forticklabelinax1.get_xmajorticklabels()遍历x轴主刻度标签,设置字号与旋转角度。#设置x轴刻度标签样式forticklabelinax1.get_xmajorticklabels():ticklabel.set_fontsize(12)#标签字号设置为12ticklabel.set_rotation(50)#标签旋转50°代码段8/10第2条与第3条折线绘制空调与电视(青色虚线)和生活小家电(绿色虚线)两条折线。ax1.plot(year_seasons,random_y1,'c--',label='空调与电视',marker='o')#marker='o',数据点的形状为圆形'c--',青色虚线ax1.plot(year_seasons,random_y2,'g--',label='生活小家电',marker='o')#marker='o',数据点的形状为圆形'g--',绿色虚线代码段9/10xlabel/ylabel/title/legend/grid添加坐标轴标签、图表标题、图例与y轴网格线。plt.xlabel('年份')#添加x轴标签plt.ylabel('销售业绩/万元')#添加y轴标签plt.title('2012—2017年各业务季度销售总值折线图')#添加图表标题plt.legend(['厨房电器','空调与电视','生活小家电'])#图例plt.grid(axis='y',ls='--',alpha=0.4)#y轴网格线代码段10/10savefig+show将图表保存为图片文件并显示。plt.savefig('sale.png')#保存为图片文件plt.show()至此,多折线图完整代码结束。图片保存至sale.png,可在报告或文档中直接引用。6.2.2共享坐标轴6.2.2共享坐标轴当需要从多个维度对数据进行展现时,可在一幅图像中绘制多个图形。多维度展现:为什么需要共享坐标轴?多个图形的表达意图和单位可能完全不同,此时可以采用共享坐标轴的方式同时绘制两种图形,即共享一个x轴,y轴分别使用左右两个刻度来标识。常见场景:柱形图(盈利额)与折线图(比例)叠加展示于同一图表。共享方式:共享x轴,左右y轴分别标识共享一个x轴,y轴分别使用左右两个刻度来标识。可以利用函数Axes.twinx()、Axes.twiny()来生成坐标轴实例以共享x轴或者y轴。Axes.twinx()共享x轴,生成独立y轴(右侧)Axes.twiny()共享y轴,生成独立x轴(上方)生成共享坐标轴:twinx()与twiny()可以利用函数Axes.twinx()、Axes.twiny()来生成坐标轴实例以共享x轴或者y轴。twinx()新建坐标系与原坐标系共享x轴,右侧新增独立y轴twiny()新建坐标系与原坐标系共享y轴,上方新增独立x轴subplots()一次性创建多个子图在Matplotlib中,可以通过matplotlib.pyplot.subplots(nrows,ncols,sharex=False,sharey=False)方法一次性创建多个子图。matplotlib.pyplot.subplots(nrows,ncols,sharex=False,sharey=False)subplots()参数说明matplotlib.pyplot.subplots()方法各参数说明如下。nrows指定子图的行数ncols指定子图的列数sharex控制x轴刻度的共享方式sharey控制y轴刻度的共享方式share方式:False或None共享方式的参数取值含义如下。False或None各子图独立显示刻度,互不影响这是sharex与sharey的默认值,子图拥有完全独立的坐标轴。share方式:True或'all'True或'all'所有子图共享同一组刻度适用于所有子图数据范围一致、需要统一刻度对比的场景。share方式:'row'与'col''row'同一行的子图共享x轴刻度'col'同一列的子图共享y轴刻度注意:sharex='col'的刻度标签显示当sharex='col'时,默认只在当前列最底部的子图显示x轴刻度标签。若需在其他行的子图显示标签,可使用tick_params()进行调整。使用ax.tick_params(labelbottom=True)可强制在指定子图显示x轴刻度标签。数据集dish_profit.xls字段说明数据集dish_profit.xls记录了某餐厅10种畅销菜品的盈利数据,包含以下三个字段:菜品ID菜品唯一标识菜品名称菜品显示名盈利各菜品盈利金额(元)图6-9菜品盈利共享坐标轴1图表采用双坐标轴设计,左y轴为盈利额(柱形图),右y轴为累计盈利比例(折线图),x轴为菜品名称。三轴含义:x/lefty/righty菜品名称为横坐标(x轴)、盈利额为左纵坐标(lefty轴)、累计盈利比例为右纵坐标(righty轴)。x轴菜品名称(分类)lefty轴盈利额(元)righty轴累计盈利比例(%)绘制步骤:ax1柱形图+ax2折线图创建主坐标系ax1说明:使用fig,ax1=plt.subplots(figsize=(10,6))创建图像对象fig

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论