版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目8matplotlib图形库的数据可视化
任务8.1基础绘图matplotlib概述绘制MATLAB接口折线图绘制面向对象接口折线图认识matplotlib图形结构和基本对象设置辅助层对象配置matplotlib参数matplotlib概述
是什么:matplotlib是Python一种绘图库,是Python数据可视化库中的泰斗,它已经成为python中公认的数据可视化工具。我们所熟知的pandas和seaborn的绘图接口其实也是基于matplotlib所作的高级封装。名字取材于MATLAB,模仿MATLAB构建。
为什么选择:非常强大的Python画图工具;呈现数据。
能做什么:matplotlib可以绘制线图、散点图、条形图、柱状图、3D图形、甚至是图形动画等。绘制MATLAB接口折线图基于Matlab的绘图接口:使用matplotlib.pyplot,依赖pyplot自动创建figure和axes,并绘图。这种绘图主要使用pyplot模块,该脚本里面有大量def定义的函数,绘图时就是调用pyplot.py中的函数。绘图函数plot():Matplotlib中绘制折线图的函数。线图用来描述两个变量之间的关系,譬如方程y=ax+b中y随x变化而变化的关系。便捷的MATLAB风格接口通用绘图模板绘制MATLAB接口折线图绘制面向对象接口折线图基于面向对象的绘图接口:显式创建figure和axes,在上面调用绘图方法,也被称为OO模式(object-orientedstyle),适合复杂图形绘制。这种绘图方式主要使用matplotlib的两个子类:matplotlib.figure.Figure和matplotlib.axes.Axes。画每张图时,画布为matplotlib.figure.Figure的一个实例,每个子图为matplotlib.axes.Axes的一个实例,你想设置的元素网格线、坐标刻度等,都可以在二者的属性中找出来使用。MATLAB风格接口和面向对象接口通用绘图模板是一致。绘制面向对象接口折线图认识matplotlib图形结构和基本对象设置辅助层对象axes外观(facecolor)边框线(spines)坐标轴名称(axislabel)坐标轴界限(axis、xlim和ylim)坐标轴刻度(ticks)坐标轴刻度标签(ticklabels)网格线(grid)图例(legend)标题(title)辅助线(axhline、plt.axvline)配置matplotlib参数参数设置可以控制Matplotlib中几乎所有属性的默认值:图形大小和DPI、线宽、颜色和样式、轴、轴和网格属性、文本和字体属性等。rc参数法通过rcParams字典动态访问并修改所有已经加载的配置项。配置语句格式:mpl.rcParams['<paramname>']=<value>。mpl.rcParams['figure.figsize']=(4,3)#修改图像尺寸,重启服务配置失效rc函数法matplotlib.rc可以使用关键字参数一次修改单个组中的多个设置。通过matplotlib.rc()传入属性的关键字元组,一条语句中修改多个配置项。mpl.rc(‘lines’,linewidth=4,color=‘b’)#两个配置项等同于:mpl.rcParam['line.linewidth']=4mpl.rcParam['line.linecolor']='b'小结matplotlib概述绘制MATLAB接口折线图绘制面向对象接口折线图认识matplotlib图形结构和基本对象figure(画布)、axes(一张画布上的一块区域,坐标系)、axis(坐标轴)figure画布和axes坐标轴并不能显示的看见,axis坐标轴的各种图形可见。设置辅助层对象配置matplotlib参数小结创建画布的两种方式隐式创建当第一次执行plt.xxx()画图代码时,系统会去判断是否已经有了figure对象。如果没有,系统会自动创建一个figure对象,并且在这个figure之上,自动创建一个axes坐标系。默认创建一个figure对象,一个axes坐标系。显示创建plt.subplots是显示创建一个figure对象的一种方法,如果我们想要在一个figure对象上,绘制多个图形,那么我们就必须拿到每个axes对象,然后调用每个位置上的axes对象的绘图方法,就可以在每个对应位置的坐标系上,进行绘图。
无论隐式创建还是显示创建figure对象,都可以通过plt.gca()获取当前axes对象。小结绘图细节figure画布;axes坐标系,一个画布上可以有多个坐标系;axis坐标轴,一个坐标系中可以有多个坐标轴,一般都是二维平面坐标系,或者三维立体坐标系;title标题;legend图例;grid背景网格;tick刻度;axislabel坐标轴名称;ticklabel刻度名称,包括majorticklabel主刻度标签和minorticklabel副刻度标签;line线;style线条样式;marker点标记;font字体相关。项目8matplotlib图形库的数据可视化
任务8.2设置图形样式和色彩设置绘图样式设置色彩设置plot的样式和色彩设置绘图样式使用matplotlib预先定义样式(plt.style.available)[‘Solarize_Light2’,‘_classic_test_patch’,‘_mpl-gallery’,‘_mpl-gallery-nogrid’,‘bmh’,…]plt.style.use('seaborn')#使用'seaborn'样式使用自定义样式创建一个扩展名为mplstyle的样式清单axes.titlesize:24axes.labelsize:20lines.linewidth:3lines.markersize:10xtick.labelsize:16ytick.labelsize:16通过调用style.use样式表的路径或URLplt.style.use('style/presentation.mplstyle')#使用自定义样式plt.plot([1,2,3,4],[2,3,4,5]);设置绘图样式使用组合样式matplotlib支持组合样式的引用,只需在引用时输入一个样式列表,若是几个样式中涉及到同一个参数,右边的样式表会覆盖左边的值。plt.style.use(['Solarize_Light2','style/presentation.mplstyle'])plt.plot([1,2,3,4],[2,3,4,5]);使用rcparams参数设置样式mpl.rcParams['lines.linewidth']=2mpl.rcParams['lines.linestyle']='--'plt.plot([1,2,3,4],[2,3,4,5]);#matplotlib还提供了一次性修改多个样式#mpl.rc('lines',linewidth=4,linestyle='--')取消rcParams参数修改mpl.rc_file_defaults():恢复到本次导入matplotlib时的默认配置mpl.rcdefaults():恢复到下载matplotlib时的默认配置设置绘图样式with局部修改绘图风格绘图风格只对with模块中的axes起作用,“ggplot”是一种样式。如果只想为特定的代码块使用样式,但不想更改全局样式,那么样式包将提供一个上下文管理器,用于将更改限制到特定的范围。设置色彩matplotlib内置单颜色使用,识别以下格式以指定单颜色(1) RGB或者RGBA元组格式颜色颜色用[0,1]之间的浮点数表示,四个分量按顺序分别为(red,green,blue,alpha),其中alpha透明度可省略。RGA即Red,Green,Blue;RGBA即Red,Green,Blue,Alpha。例如:color=(0.1,0.2,0.5,0.5)。(2) RGBorRGBA对应的HEX格式颜色用十六进制颜色码表示,同样最后两位表示透明度,可省略。例如:color='#0F0F0F0F'。(3) 一种简写的十六进制RGB或RGBA字符串相当于通过复制每个字符获得的十六进制RGB或RGBA字符串。例如:'#abc',相当于'#aabbcc',不区分大小写。(4) 灰度色阶只有一个位于[0,1]之间的任意浮点数,其中0为纯黑色,1为白色。例如:color='0.5'。(5) 单字符基本颜色matplotlib有八个基本颜色,可以用单字符串来表示,分别是'b','g','r','c','m','y','k','w',对应的是blue,green,red,cyan,magenta,yellow,black,andwhite的英文缩写。例如:color='red'。设置色彩(6) X11/CSS4颜色根据HTML中的颜色定义,使用其中的颜色名称直接作为参数。例如:color=’blue’。(7) xkcd中的颜色根据xkcd网站提供的颜色名称,需要加上前缀xkcd,例如:’xkcd:crimson’。(8) Cn格式颜色matplotlib.rcParams['p_cycle']可输出所有颜色,所有颜色为['#1f77b4','#ff7f0e','#2ca02c','#d62728','#9467bd','#8c564b','#e377c2','#7f7f7f','#bcbd22','#17becf'],'C0'对应'#1f77b4',其中的'N'表示数字,代表属性循环的index,依次类推。(9) Tableau的colormap颜色{{'tab:blue','tab:orange','tab:green','tab:red','tab:purple','tab:brown','tab:pink','tab:gray','tab:olive','tab:cyan'}},默认颜色循环,不区分大小写。例如:labelcolor='tab:blue'。设置色彩使用colormap设置一组颜色使用colormap的方式配置一组颜色,从而在可视化中通过色彩的变化表达更多信息。Colormap分ListedColormap和LinearSegmentedColormap两种,前一种存储特定的颜色(比如说红白黑三种),使用colors可以取出所有的RGBA色号值;后一种是渐变色。Colormap颜色条可通过matplotlib的cm模块调用,print(dir(cm))输出所有的颜色名称。设置色彩使用colormap设置一组颜色使用colormap的方式配置一组颜色,从而在可视化中通过色彩的变化表达更多信息。Colormap分ListedColormap和LinearSegmentedColormap两种,前一种存储特定的颜色(比如说红白黑三种),使用colors可以取出所有的RGBA色号值;后一种是渐变色。Colormap颜色条可通过matplotlib的cm模块调用,print(dir(cm))输出所有的颜色名称。设置色彩设置plot的样式和色彩:plot函数中支持除X,Y以外的参数,还有以字符串形式存在参数,来控制颜色、线条样式和点标记等要素。小结设置绘图样式使用预先定义的样式表;使用自定义样式;使用组合样式;使用rcparams参数设置样式。设置色彩单色颜色的基本方法;colormap多色方法。设置plot的样式和色彩线型样式:参数linestyle或ls色彩:参数color或c点型:marker参数项目8matplotlib图形库的数据可视化
任务8.3绘制其他2D图形绘制多图在同一个画布:MATLAB风格接口和面向对象接口两种方式绘制直方图:plt.hist函数绘制条形图:plt.bar函数绘制饼图:plt.pie函数绘制散点图:plt.scatter设置图形内文字和注释:plt.text函数和plt.annotate函数绘制多图在同一个画布MATLAB风格接口:自动创建和管理图和坐标系,用pyplot函数作图pyplot接口绘制plt.subplot(23*)plt.xxx()
plt.subplot(231)plt.plot(x,y)#折线图plt.barh(x,y)#水平柱状图plt.bar(x,y)#堆叠柱状图plt.bar(x,y1,bottom=y,color='r')plt.boxplot(x)#箱线图plt.scatter(x,y);#散点图绘制多图在同一个画布面向对象接口:显示创建图和坐标系,再调用对象的方法来作图。先获取对象,再调用对象方法。创建Figure实例在Figure上创建Axes在Axes上添加基础类对象fig,axes=plt.subplots(1,4)axes[0].scatter#散点图axes[1].step#阶梯图axes[2].bar#条形图axes[3].fill_between
#条带图绘制直方图:plt.hist函数直方图(histogram)展示离散型数据分布情况,直观理解为将数据按照一定规律分区间,统计每个区间中落入的数据频数,绘制区间与频数的柱状图即为直方图。y=np.random.randn(100)
#设置bins参数,绘制5个binplt.hist(y,bins=5);绘制条形图:plt.bar函数条形图是用宽度相同的条形的高度或者长短来表示数据多少的图形,可以横置或纵置,纵置时也称为柱形图。#垂直条形图dic={'A':40,'B':70,'C':30,'D':85}forkk,vvindic.items():#第一个参数为条形左下角的x轴坐标,#第二个参数为条形的高
plt.bar(kk,vv);水平条形图barh函数绘制饼图:plt.pie函数饼图可以显示一个数据序列中各项的大小与各项总和的比例,每个数据序列具有唯一的颜色或图形,并且与图例中的颜色是相对应的。饼图适合展示各部分占总体的比例。mpl.rcParams['font.family']='SimHei'plt.figure(figsize=(6,6))x=[4,9,21,55,30,18]labels=['Swiss','Austria','Spain','Italy','France','Benelux']explode=[0.2,0.1,0,0,0.1,0]colors=['r','k','b','m','c','g']plt.pie(x,labels=labels,labeldistance=1.2,explode=explode,colors=colors,autopct='%1.1f%%',pctdistance=0.5,shadow=True);plt.title('饼图');绘制散点图:plt.scatter散点图是指数据点在直角坐标系平面上的分布图,通常用于比较跨类别的数据。散点图用于展示数据的分布和聚合情况。#解决坐标轴负数的负号显示问题plt.rcParams['axes.unicode_minus']=False#s参数设置散点的大小;#c参数设置散点的颜色;#marker参数设置散点的形状plt.scatter(x,y,s=20,c='red',label="label1");设置图形内文字:plt.text函数图形内的文字plt.text():显示文本(基于坐标)。
forx,yinzip(x,y):plt.text(x,y,y,ha="center",va="bottom",fontsize=10)plt.figtext():显示文本(基于图形)。figtext函数用于在图形上的任何位置添加文本,甚至可以在axis之外添加文本。它使用完整的图形作为坐标,其中左下表示(0,0),右上表示(1,1),图形的中心是(0.5,0.5)。text="""1我爱南京信息职业技术学院2我爱人工智能学院"""plt.figtext(0.1,0.0,text,fontsize=8,va="top",ha="left")设置图形内注释:plt.annotate函数注释就是在图形上绘制文本等说明信息。plt.annotate('thisspotmustreally\nmeansomething',xy=(6,30),xytext=(8,31.5),
arrowprops=dict(width=2,headlength=10,headwidth=1,facecolor='black',shrink=0.1));
#xy参数设置箭头指示的位置,xytext参数设置注释文字的位置#arrowprops参数以字典的形式设置箭头的样式小结折线图plt.plot以折线的上升或下降来表示统计数量的增减变化的统计图。特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)直方图plt.hist由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据范围,纵轴表示分布情况。特点:绘制连续性的数据,展示一组或者多组数据的分布状况。(统计)条形图plt.bar排列在工作表的列或行中的数据可以绘制到条形图中。特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计)小结散点图用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。特点:判断变量之间是否存在数量关联趋势,展示离群点。(分布规律)箱线图又称为盒须图、盒式图或箱形图,用作显示一组数据分散情况资料的统计图。特点:简洁地概述数据集的特性,比较多个数据集,识别异常值方面有一定的优越性。(异常值)饼图用于表示不同类别的占比情况,通过弧度大小来对比各种类别。特点:比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于比例每个类别相对于总数的大小。(比例)项目8matplotlib图形库的数据可视化
任务8.4高阶绘图绘制多个子图,包括镶嵌式和非镶嵌式、均匀状态和非均匀状态设置多个子图共享坐标轴设置图形轴框线、设置figure的大小设置其它绘制镶嵌式的多重图表fig.add_axes():可以被用于镶嵌式的多重图表绘制。fig.add_axes([x,y,width,height]):在指定的位置添加axes,需要指定axes左下角的坐标位置,宽度高度。axes1=fig.add_axes([0.1,0.1,0.8,0.8])axes2=fig.add_axes([0.2,0.5,0.4,0.3])#mainaxesaxes1.plot(x,y,'r')#insetaxesaxes2.plot(y,x,'g')绘制非镶嵌式均匀状态的多重图表fig.add_subplot()、plt.subplot()、plt.subplots();fig.add_subplot()和plt.subplot()两种方法与fig.add_axes()方法相比,不能控制Axes对象的具体位置,更无法设置嵌套结构的子图。在figure上添加单个axes使用基于1的索引。fig.add_subplot()和plt.subplot()使用方式一样。#fig.add_subplot()和#plt.subplot()使用方式一样ax1=plt.subplot(121)#子图1plt.plot([1,2,3],[1,2,3])ax2=plt.subplot(122)#子图2ax2.plot([1,2,3],[3,2,1]);绘制非镶嵌式均匀状态的多重图表plt.subplots绘制均匀状态下的子图
一次性添加多个子图,并且子图呈网格状排布。返回一个figure和m×n的axes数组。figsize参数可以指定整个画布的大小,
sharex和sharey分别表示是否共享横轴和纵轴。fig,axs=plt.subplots(2,3,figsize=(8,4),sharex=True,sharey=True)plt.subplots_adjust(wspace=2,hspace=4)#调整子图之间的间距fig.tight_layout();#自动调节子图的位置,使得子图之间不会发生重叠subplots是基于OO模式的写法,显式创建一个或多个axes对象,然后在对应的子图对象上进行绘图操作。
subplot是基于pyplot模式的写法,每次在指定位置新建一个子图,并且之后的绘图操作都会指向当前子图,本质上subplot也是Figure.add_subplot的一种封装。绘制非镶嵌式非均匀状态的多重图表plt.subplot2grid()GridSpec()、fig.add_gridspec()
该函数能够在画布的特定位置创建axes对象,即绘图区域。不仅如此,它还可以使用不同数量的行、列来创建跨度不同的绘图区域。GridSpec或add_gridspec可以指定相对宽度比例
width_ratios和相对高度比例参数height_ratios调整合并子图。也通过切片也可以实现子图的合并而达到跨图的功能。更灵活。设置多个子图共享坐标轴同一幅图中并列的2个X、Y轴twinx()和twiny()ax2=ax1.twinx()#twinx()的作用是在ax1的位置创建了另一个ax2对象覆盖于其上,并保证2个Axes对象的X轴完全一致,从而达到了1幅图中2个Y轴的效果。设置多个子图共享坐标轴不同的图保持一致的X、Y轴sharex参数和sharey参数#ax2对象与ax1对象保持一致的X轴ax2=fig.add_subplot(312,sharex=ax1)#ax3对象与ax1对象保持一致的X轴ax3=fig.add_subplot(313,sharex=ax1)设置边框ax.spines['bottom'].set_color('blue')ax.spines['top'].set_color('blue')ax.spines['left'].set_color('red')ax.spines['left'].set_linewidth(2)ax.spines['right'].set_visible(False);#等价ax.spines['right'].set_color("None")#等价ax.spines['right'].set_color("none")设置中央坐标轴通过set_color去掉不想显示的轴线、通过set_position把轴线移动到特定#隐藏上侧和右侧坐标轴线ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')#将下侧、左侧坐标轴线移到图中央#‘data’表示将边框放置在指定的数据坐标处ax.spines['bottom'].set_position(('data',0))ax.spines['left'].set_position(('data',0))#设置坐标轴刻度
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026-2027学年山西省太原市高三(上)联考数学试卷(10月份)(含答案)
- 2025年共情对话技术驱动AI心理咨询的产品迭代
- 财务税务申报流程自动化方案
- 光伏储能系统运行管理手册
- 商洽2026年战略合作框架协议细节函3篇范本
- 新能源汽车用户直播带货话术与话术优化指南
- 工程师项目开发KPI绩效评定表
- 能源行业运维工程师安全实施与维护工作绩效考评表
- 任务执行绩效考核表
- 2026年蚌埠市蚌山区网格员招聘笔试必考题库(含答案)
- 26秋人教数学-5.1.3求一个数的百分之几是多少
- 自发性气胸诊疗指南2023
- 城市防洪工程设计规范
- 2026 年产科产后出血急救护理流程培训课件
- 第15课 探寻新航路课件(共26张+视频) 统编版九年级历史上册1
- 第1章人体内环境与稳态(满分培优卷)(原卷版+解析)
- 2026年三级公立医院绩效考核指标分析报告
- 物业服务履约质量评价方案
- 光明区2025广东深圳市光明区科技创新服务中心博士后招聘笔试历年参考题库典型考点附带答案详解
- 学礼仪懂尊重做文明小学生-小学主题班会课件
- 高级机工见习记录薄填写
评论
0/150
提交评论