




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python数据可视化第3章Matplotlib图形类别教师:xxx2024.07第1节连续型数据可视化第3章Matplotlib图形类别第2节离散型数据可视化第3节比例数据可视化第4节关系数据可视化第1节连续型数据可视化折线图(LineChart,亦称曲线图)是将数据点用直线连接而成的图形。折线图可用于展示连续型数据变量间的关系,直观体现目标变量y随自变量x的变化趋势,从而发现数据之间的关联性。折线图的X轴通常是数量或时间,Y轴是数值,其基本框架如右图所示。一、折线图Matplotlib绘图程序头部几乎都需要引用下面的语句,为节省篇幅,后续代码段不再列出这些语句,默认下述语句已包含。importnumpyasnpimportmatplotlib.pyplotaspltplt.rcParams['font.family']='Simhei' #中文正常显示plt.rcParams['axes.unicode_minus']=False #负号正常显示第1节连续型数据可视化函数plt.plot()用于绘制折线图,常用参数如下表所示。一、折线图参数名描述参数名描述无形参名前两组数据对应x和y数据color颜色,简写为“c”linestyle线条类型,简写为“ls”linewidth线条粗细,简写为“lw”marker散点类型alpha透明度,取值0~1之间plot函数常用参数表plt.plot([1,2,3],[3,5,4],c='r',lw=2)#折线,默认不绘制点plt.plot(range(5),marker='o')#直线,marker散点类型'o'第1节连续型数据可视化如果想一次绘制多条线,可以用plot(x1,y1,x2,y2,x3,y3)的格式,系统自动为每条线设置不同颜色,也可自行指定颜色。颜色参数如下表所示,颜色用英文单词或缩写字母表示均可。一、折线图
color参数颜色缩写指代颜色颜色缩写指代颜色b蓝色m品红色g绿色y黄色r红色k黑色c青色w白色第1节连续型数据可视化线条的颜色、数据点形状和线型除了可用c、marker和ls这三个参数分别设置外,还可以将三个参数合并简写为一个格式字符串,如下图所示。一、折线图折线图格式字符串示例x=np.arange(15)plt.plot(x,x*2,'gD-',x,x*3,'ro:',x,x*4,'y^--')第1节连续型数据可视化下面用折线图展示两种商品的销售数量对比,代码如下。一、折线图plt.figure(figsize=(8,6))day=list(range(1,11))A=[314,359,205,1469,1829,1327,165,878,438,514]#A商品B=[963,1639,906,2027,3175,2485,4042,3501,3265,3200]#B商品plt.plot(day,A,'bD--',lw=2,label='A') #折线Aplt.plot(day,B,'gx:',lw=2,label='B')plt.legend(fontsize=16)plt.ylim(0,5000) #y轴数据范围#数据点上方添加销量,y+150调整标注位置,ha/va水平和垂直对齐forx,yinzip(day,A):plt.text(x,y+150,y,ha='center',va='bottom',fontsize=14,c='b')forx,yinzip(day,B):plt.text(x,y+150,y,ha='center',va='bottom',fontsize=14,c='g')plt.xlabel('日期',fontsize=16)plt.ylabel('数量',fontsize=16)plt.title("商品A/B十日销售数量对比图",fontsize=18);第1节连续型数据可视化阶梯图是折线图的y值持续保持在同一个值,直到发生变化跳跃到下一个值,其形状类似阶梯。plt.step()函数绘制阶梯图。二、阶梯图阶梯图的结构第1节连续型数据可视化二、阶梯图x=[1,2,3,4,5,6,7,8]y=[31882,31993,31691,31475,30828,30595,31500,30552]plt.step(x,y,where='pre')plt.xticks(x,['1月','2月','3月','4月','5月','6月','7月','8月'])plt.grid(axis='y',ls=':',alpha=0.6)plt.xlabel('月份(单位:月)')plt.ylabel('金额(单位:元)')plt.title('2020年1-8月广州房价变化阶梯图');第1节连续型数据可视化面积图亦称堆积折线图,是将折线图中折线与X轴之间的区域用颜色或纹理填充(填充区域的大小称为“面积”),填充后的关注焦点会聚焦于色块上。面积图一般是多组时序数据的叠加,强调数量随着时间而变化,引导人们关注总值的变化趋势。面积图上总的面积代表了所有数据的总和,各个层的面积表示各数据分量的和,这些堆叠起来的面积图在观察大数据的各个分量变化情况时格外有用。三、面积图堆叠面积图基本框架第1节连续型数据可视化三、面积图x=np.arange(1,6)y1=[20,36,40,22,20]y2=[60,85,70,65,62]y3=[40,55,60,45,30]labels=['A','B','C']#自定义颜色,颜色由十六进制RGB构成colors=['#ac8e00','#fc8d99','#abcd05']plt.stackplot(x,y1,y2,y3,labels=labels,colors=colors)#面积图plt.legend(fontsize=14)plt.title('面积图',fontsize=18)第2节离散型数据可视化一、散点图散点图,顾名思义就是由一些散乱的点构成的图形。散点图使用一系列的散点在平面直角坐标系中展示(x,y)变量的分布情况。在统计学的回归分析与预测中会频繁使用散点图。散点图基本框架plt.scatter()绘制散点图,格式为:plt.scatter(x,y,s=None,c=None,marker=None,cmap=None,edgecolors=None,**kwargs)第2节离散型数据可视化一、散点图fromsklearn.datasetsimportload_iris#鸢尾花数据集iris=load_iris()#实例化数据集mark=['^','*','H']#点的形状colors=['b','r','y']#点的颜色fork,vnameinenumerate(iris.target_names):plt.scatter(iris.data[k*50:(k+1)*50,0],iris.data[k*50:(k+1)*50,1],marker=mark[k],c=colors[k],s=30,label=vname)plt.xlabel("sepallength",fontsize=16)plt.ylabel("sepalwidth",fontsize=16)plt.title("sepallengthandwidthscatter",fontsize=18)plt.legend()第2节离散型数据可视化二、柱状图柱状图是以柱体高度或者长度的差异来反映数值变化的一种统计图表。柱状图的水平x轴可以是类别型、序数型或数值型,数值y轴映射柱体的高度。函数plt.bar(x,height,width=0.8,bottom=None,align='center',*kwargs)用于绘制柱状图。柱状图基本框架第2节离散型数据可视化二、柱状图np.random.seed(7)sno=np.arange(1,11)#学号score=np.random.randint(55,100,10)#成绩plt.ylim(0,105)plt.bar(sno,score,width=0.5,tick_label=sno)#柱状图forx,yinzip(sno,score):
#标注数字plt.text(x,y+2,y,ha='center',va='bottom',fontsize=14)plt.xlabel('学号',fontsize=16)plt.ylabel('成绩',fontsize=16);第2节离散型数据可视化三、堆积柱状图堆积柱状图是将同一类别的若干柱体上下堆积而成的。前面介绍的簇状柱形图是将同一类的柱体并列放置,堆积柱状图则将柱体上下堆叠。堆叠后即可对比单个数据,又可对比每个类别的总和数据。示例参见代码文件"03.ipynb"。堆积柱状图框架第3节比例数据可视化一、饼图比例数据是日常生活中常见的一类数据。例如,选民的性别比例、地区比例和教育程度比例等。在比例数据中,我们关注各部分的占比,占比总和应为100%。饼图适合表现比例、份额类的数据,清晰地呈现了各子类的占比情况。饼图的基本框架如右图所示,圆饼代表整体,每个扇形代表整体的一部分。饼图不适合做数据的精确对比,因为对人眼来说,占比20%和25%的扇形区分度并不大。分类过多的数据也不适合使用饼图,类别应控制在10个以内。plt.pie()用于绘制饼图。饼图基本框架第3节比例数据可视化一、饼图x=[10,5,20,10,25,15]labels='波斯猫','加菲猫','短毛猫','狸花猫','孟加拉猫','其它'plt.pie(x,labels=labels,autopct='%.1f%%',textprops={'fontsize':12})#'%.1f%%'显示百分比plt.legend(bbox_to_anchor=(1.05,1))第3节比例数据可视化二、分裂式饼图饼图每个扇形的尖端和圆心是重合的,如果想重点突出某一个扇形,可设置参数explode来实现。例如设置explode=(0,0.2,0,0,0,0)将第2个扇形突出了0.2的位置。突出的饼图x=[10,5,20,10,25,15]labels='波斯猫','加菲猫','短毛猫','狸花猫','孟加拉猫','其它'explode=(0,0.2,0,0,0,0) #第2个扇形突出0.2patch,txt,pct=plt.pie(x,labels=labels,autopct='%.1f%%',explode=explode,textprops={'fontsize':12})forpinpatch: #patch是pie()命令返回的扇形组列表p.set_alpha(0.6)#设置每个扇形的透明度plt.legend(bbox_to_anchor=(1,1)) #右图第3节比例数据可视化三、环形图环形图可视为饼图的变形。环形图看起来像一个面包圈,外围不同颜色的弧形长度反映数值的差异,而饼图则是通过扇形角度反映类别的占比。饼图强调整体性,一般只绘制单个饼图,只反映按一个指标分类的占比。而环形图可以叠加,同时反映多种分类情况的对比。环形图框架第3节比例数据可视化三、环形图两种绘制方式:#方式1:两个同心圆堆叠(视觉错觉)plt.pie([1,2,3])
#大圆,默认半径为1plt.pie([1,2,3],colors='w',radius=0.6)
#小圆、白色、半径0.6#方式2:wedgeprops参数设置环的宽度为0.4plt.pie([1,2,3],wedgeprops=dict(width=0.4))第4节关系数据可视化统计学要探寻数据与数据之间的关系,关系就是关联性,即通常所谓的正相关、负相关或者不相关。为便于判断数据间的关系,我们可以将数据绘制为各种统计图表。图形能直观地反映出影响因素和预测对象之间的总体关系趋势。观察散点图上数据点的分布情况,可以推断变量间的相关性。第4节关系数据可视化一、气泡图气泡图的基本框架如右图所示。气泡图类似散点图,但会将散点设置为不同的大小。气泡的大小是有意义的,这样除了横轴和纵轴,气泡大小可以反映第三个变量的变化,相当于以二维方式绘制了三维变量的图表。如果再辅以不同的颜色,则气泡图可以反映四维变量的情况。气泡图基本框架第4节关系数据可视化一、气泡图production=[1125,1725,2250,2875,2900,3750,4125]#产量tem=[6,8,10,13,14,16,21]#温度x轴rain=[25,40,58,68,110,98,120]#降雨量y轴plt.scatter(tem,rain,s=production,c=range(7),alpha=0.6)#设置size,气泡图plt.axis([0,30,0,150])#设置x、y轴坐标范围plt.xlabel('温度',fontsize=16)plt.ylabel('降雨量',fontsize=16)plt.title('温度-降雨量对水稻产量的影响',fontsize=18);第4节关系数据可视化二、直方图直方图(Histogram,亦称质量分布图)是一种统计图表,由一系列高度不等的柱体表示数据的分布情况,基本框架如图所示。一般横轴表示数据区间段,纵轴表示柱体对应区间段所含的数据频次。构建直方图时需将数据合理分段,统计每个数据段内含有数据的个数,数据频次即柱体的高度。合理分段是构建直方图的关键,每个区间段应是相邻的,并且通常是等距的。直方图基本框架第4节关系数据可视化二、直方图np.random.seed(0)mu,sigma=100,20#均值和标准差#获取正态分布N(100,400)数组a=np.random.normal(mu,sigma,size=300)plt.hist(a,bins=20,histtype='bar',density=0,edgecolor='k',facecolor='y',alpha=0.75);第4节关系数据可视化三、堆积直方图如果想在同一画布中绘制两个班的成绩分布情况呢?这个要求可用堆积直方图来实现,绘制时提供两组数据,指定“stacked=True”的关键字参数。同时bins参数没有设置为单个数值,而是设定为一个数值列表,这样可以自定义分段区域,数据边界按左闭右开的原则。np.random.seed(7)scores1=np.random.randint(30,101,50) #1班分数scores2=np.random.randint(30,101,50) #2班x=[scores1,scores2]bins=[0,40,60,80,90,100] #自定义分数段,统计指定区间段的人次#stacked=True表示堆积plt.hist(x,bins=bins,color=['b','m'],edgecolor='k',stacked=True,label=['1','2'],alpha=0.5)plt.xticks(fontsize=16)plt.yticks(fontsize=16)plt.ylabel('人次',fontsize=16)plt.legend(fontsize=14)plt.title('两个班成绩分布(堆积直方图)',fontsize=18)堆积直方图Python数据可视化ThankYou!Python数据可视化第4章Matplotlib统计图形绘制教师:xxx2024.07第1节
箱线图第4章Matplotlib统计图形绘制第2节
极线图第3节
误差棒图第4节
等高线图第5节
3D绘图数据可视化是以图形的方式展示数据。好的图表自己会“说话”,正所谓“一图抵千言”。由于数据和需求的多样性,越来越多的统计图表被运用到可视化领域。本章介绍matplotlib中的一些统计图表,这些图表有不同的适用场合。例如,箱线图描述数据分布的情况,极线图展示数据的多个维度,误差图展示数据的不确定性,等高线图反映等值数据的投影曲线,3D图展示数据之美。统计图形绘制箱线图箱线图结构箱线图绘制方法极线图极线图绘制方法极线图参数设置误差棒图绘制误差棒图带误差棒的柱状图和条形图等高线图等高线概述等高线绘制方法3D绘图3D散点/柱状图3D曲面/投影图箱线图用于展示数据分布,由一个箱体和一对箱须构成,箱体下边沿是下四分位数Q1、上边沿是上四分位数Q3,箱体内的横线对应中位数Q2。箱须表示数据的范围,在箱须末端之外的数值被视为离群值,一般用小圆圈标注这些异常值。箱线图一目了然地反映了数据的大致分布,可以粗略地看出数据是否具有对称性及分布的离散程度等信息。第1节
箱线图一、
箱线图概述二、
箱线图绘制plt.plot()用于绘制箱线图,语法格式如下,主要参数如表4-1所示。plt.boxplot(x,
sym=None,
whis=None,
widths=None,
patch_artist=None,...)参数名说明参数名说明x数据序列widths设置箱体宽度vertTrue纵向,False横向patch_artist是否给箱体设置颜色showmeans默认False不显示,True则显示均值线meanline默认False均值用点表示,True均值用线表示labels刻度标签sym离群点的标记样式whis四分位间距的倍速,确定箱须包含数据的范围,默认值1.5importmatplotlib.pyplotasplt x=[1,21,2,3,5,39,13,1,34,55,8,89]#meanline表示均值用线表示(默认用点),如右图plt.boxplot(x,showmeans=True,meanline=True) 二、
绘图示例如上图所示,箱线图主要由箱体、箱须和离群值等部分组成。其中,箱体的范围由下四分位数Q1和上四分位数Q3界定。箱线图涉及分位数的计算,公式W=1+(n-1)*QS用于计算分位数的位置。其中n是数据个数,QS是分位点,例如Q1、Q2和Q3对应的分位点为0.25、0.5和0.75。本例中,Q1=2+(3-2)*0.75=2.75;Q3=34+(39-34)*0.25=35.25。(详细计算过程见教材)上面的计算结果可以用numpy的分位数函数percentile验证如下:importnumpyasnp x=[1,21,2,3,5,39,13,1,34,55,8,89]print(np.percentile(x,[25,50,75])) #计算25%,50%,75%分位数,注意参数是整数格式输出:[2.7510.535.25]
多组数据可以同时绘制多个箱线图,以便对比分析。例如绘制某班两门课程的成绩对比,代码如下:np.random.seed(7)y1=np.random.randint(70,100,50) #成绩1y2=np.random.randint(40,95,50) #成绩2data=[y1,y2]labels=['python数据可视化','数据挖掘']
#课程名colors=['#FFF68F','#9999ff']whis=0.4 #箱须系数,由默认值1.5调整为0.4widths=0.5 #箱体宽度box=plt.boxplot(data,whis=whis,widths=widths,sym='*',labels=labels,patch_artist=True)forpatch,colorinzip(box['boxes'],colors): #遍历box['boxes'],设置不同的箱体颜色patch.set_facecolor(color)plt.axhline(np.mean(y1),c='#FFF68F')
#均值水平参考线plt.axhline(np.mean(y2),c='#9999ff')plt.xticks(fontsize=16)plt.ylabel('分数',fontsize=14)plt.title('课程成绩箱线图',fontsize=16) 二、箱线图绘制极线图是绘制在极坐标系上的图形,通过极角和极径来对比数据的差异。极线图上可同时绘制多个数据序列,每个数据序列的点用线条连接,各个点可能代表某个数据指标,例如对企业经营的收益性、生产性、流动性、安全性和成长性等方面的评分。多根线条组合在一起形似雷达形状,因此极线图也称为雷达图。极坐标系中点的坐标用弧度(theta)和极径(r)描述,绘制极线图需提供两个相同长度的参数数组theta和r,对应极角和极径。极线图的绘制有如下两种方法:第2节
极线图#方法一使用函数plt.polar()theta=np.linspace(0,2*np.pi,6) #极角,弧度#注意,为封闭图形,序列末尾应再加上第一个数据r1=[3,4,5,5.5,4,3]#A企业5项评分r2=[4,5,5,4.5,3,4]#B企业5项评分labels=['收益性','生产性','流动性','安全性','成长性','收益性']plt.polar(theta,r1,c='g',marker='*',markerfacecolor='b',markersize=15,lw=2) plt.polar(theta,r2,c='y',marker='d',markerfacecolor='r',markersize=10,lw=2)plt.thetagrids(theta*180/np.pi,labels) #外圈标签,参数以角度为单位plt.legend(['A','B'],fontsize=14) 一、极线图概述二、绘制方法#方法二创建子图时设置projection='polar'或polar=True的参数#theta、r1和r2与上面代码一样ax=plt.subplot(111,projection='polar') #创建极坐标子图ax.plot(theta,r1,c='g',marker='*',mfc='b',ms=15,lw=2)ax.plot(theta,r2,c='y',marker='d',mfc='r',ms=10,lw=2) 说明:以上两种方法绘图效果相同。第二种方法使用的绘图函数是ax.plot(),该方法原本是绘制折线图,但因为ax采用极坐标系,所以原来的x和y位置的参数被理解为了极角和极径。参数mfc、ms和lw分别是markerfacecolor、markersize和linewidth的简写。类似上面的绘制方法,还可以将数据样本以辐射柱形图展示出来。ax.bar()命令原本用于绘制直角坐标系下的柱状图,需要的参数为x和height。当ax子图采用极坐标系后,x位置的参数被视为极角,height位置的参数被视为极径,width参数指定扇形的弧度,此处width宽度一般没有实际意义。二、绘制方法ax=plt.subplot(polar=True)#创建极坐标系子图theta1=np.linspace(0,2*np.pi,5,endpoint=False) #A极角theta2=np.linspace(0.35,2*np.pi+0.35,5,endpoint=False) #B从0.35弧度开始,与A错开r1=[3,4,5,5.5,4]#A企业的5项评分r2=[4,5,5,4.5,3]#B企业的5项评分ax.bar(theta1,r1,color='b',width=0.3,alpha=0.4) #极坐标系中ax.bar绘制辐射柱形图ax.bar(theta2,r2,color='r',width=0.3,alpha=0.4)plt.legend(['A','B'],fontsize=14) 巧妙设置极角和极径可以在极坐标系中绘制出很多美观的几何图形,下面试举两例,代码如下:三、极坐标参数设置theta=np.arange(0,2*np.pi,0.02)r=1.2*np.ones_like(theta) #r为全1数组plt.subplot(121,polar=True) #左子图plt.plot(theta,r,lw=2) #r数组的值都相同,极径一样,绘制圆plt.plot(theta,theta/4,'--',lw=2)
#渐开曲线plt.rgrids([]) #清空,圆内不标注极径数字plt.subplot(122,polar=True) #右子图plt.plot(theta,1.4*np.cos(7*theta),'--',lw=2) #绘制7个花瓣plt.rgrids([0.3,1],angle=45) #在45度角的线上标注极径0.3和1plt.thetagrids([0,45]) #图见下页左图绘制了一个整圆和渐开的曲线,同时清空了圆内的标注数字。plt.rgrids()设置同心栅格的极径大小和文字标注的角度,因此右图中的虚线圆圈只有两个,极径为0.3和1,圆圈上的标注沿45°线排列。函数plt.thetagrids()设置放射线栅格的角度,因此右图中只有两条放射线,角度为0°和45°。三、极坐标参数设置在可视化实验数据时,可以在图形上增加误差棒以表示客观存在的测量偏差。误差棒以被测量值的算术平均值为中点,向上下两端各画出一条线段,该误差线段表示被测量数据可能以某一置信度的概率落在棒上区间内。误差棒的计算方法有很多种:单一数值、置信区间、标准差和标准误等。其可视化样式可分为:水平误差棒、垂直误差棒、对称误差棒和非对称误差棒等。第3节
误差棒图plt.errorbar()用于绘制误差棒图,主要参数说明如下:x、y:数据的x坐标和y坐标yerr:y轴方向的误差xerr:x轴方向的误差ecolor:errorbar颜色elinewidth:errorbar线宽capsize:errorbar头部小横线的宽度errorevery:指定间隔。例如为3,则每3个点绘制一个errorbar一、误差棒概述plt.errorbar(x,y,yerr=None,xerr=None,ecolor=None,elinewidth=None,capsize=None,**kwargs)。代码1中参数yerr=0.15指定y轴方向的误差,上下误差默认是对称的,因此误差棒总长度为0.3。参数xerr指定x轴方向的误差。代码2演示了非对称误差的例子。#代码1x=np.linspace(0.1,0.8,10)y=np.exp(x)plt.errorbar(x,y,fmt="ro:",yerr=0.15,xerr=0.03) 二、绘制误差棒图#代码2x=np.linspace(0.1,0.8,10)y=np.exp(x)error=0.02+0.2*xlower_error=errorupper_error=0.4*error
#上误差小一些error_limit=[lower_error,upper_error]
#下误差和上误差plt.errorbar(x,y,yerr=error_limit,fmt=':*b',ecolor='y',elinewidth=4,ms=5,mfc='c',mec='r',capsize=6,capthick=2)
#非对称误差棒绘制带误差棒的柱状图,可使得柱状图反映的信息更加丰富。绘制带误差棒柱状图的关键是指定bar()函数中的参数yerr。同时,误差棒的属性由关键字参数error_kw指定,下图对误差棒的线宽、颜色和误差帽的长度做了设置。三、带误差棒的柱状图x=np.arange(7)y=[79,26,89,68,82,39,60]std_error=[7,3,2,2,3,2,6]label=['小米','魅族','华为P40','荣耀','华为nove','三星','苹果']#误差棒的格式参数error_attri=dict(elinewidth=2,ecolor='b',capsize=4)#带误差棒的柱状图
plt.bar(x,y,yerr=std_error,width=0.5,align='center',ecolor='r',color='cyan',error_kw=error_attri,tick_label=label) plt.ylabel('销售额(万元)')#刻度标签倾斜20度plt.xticks(rotation=20,fontsize=14) plt.grid(axis='y',ls=':',color='gray',alpha=0.5)plt.title('商场一季度手机销售额',fontsize=16) 与带误差棒的柱状图类似,在条形图函数barh()中也可以通过参数xerr设置误差。x=np.arange(6)y1=[100,68,79,61,72,56]std_err1=[7,2,6,5,5,3]y2=[120,75,70,78,85,80]std_err2=[5,1,4,8,9,2]tick_label=['计算机','财经','金融','工商管理','保险学','新媒体']bar_width=0.4error_attri=dict(elinewidth=2,ecolor='black',capsize=3)plt.barh(x,y1,bar_width,color='cyan',tick_label=tick_label,align='center',xerr=std_err1,error_kw=error_attri,label='广西')plt.barh(x+bar_width,y2,bar_width,color='m',tick_label=tick_label,align='center',xerr=std_err2,error_kw=error_attri,label='广东')plt.legend()plt.ylabel('图书类型',fontsize=14)plt.title('不同地区不同类型图书销量额(万元)',fontsize=16) 四、带误差棒的条形图数据分析中绘制等高线图的主要目的并不是画地图,而是用等高线及着色反映绘图区域内数值的变化情况。数据分析中的等高线图用于反映数值的变化,其本质就是绘制函数z=f(x,y)的变化。x和y是横纵坐标,通过函数映射得到z,将z值相等的各点连成平滑曲线投影到平面图形中。第4节
等高线图一、等高线图概述绘等高线图经常需要先使用np.meshgrid命令生成平面网格坐标。例如x可取值[0,1,2],y可取值[1,2,3,4],
命令“X,Y
=
np.meshgrid([0,1,2],[1,2,3,4])”将返回如下图所示的矩阵。这样X和Y两个矩阵配对,可表示这一平面范围内各点的(x,y)坐标,代入公式z=f(x,y)计算,可得到z。importnumpyasnpx=[0,1,2]y=[1,2,3,4]X,Y=np.meshgrid(x,y)函数contour()用于绘制等高线,contourf()用于填充区域颜色。一个等高线图的示例代码如下。二、绘制等高线图#1.定义函数z=f(x,y)deff(x,y):return(1-x/2+x**5+y**3)*np.exp(-x**2-y**2)#高度值#2.定义两个坐标的一维向量delta=0.25 #网格间距a=np.arange(-3.0,3.0,delta) #一维数组(长度24)b=np.arange(-2.5,2.5,delta) #一维数组(长度20)#3.获得网格坐标矩阵X,Y=np.meshgrid(a,b)#将向量a和b映射为网格,X和Y是二维网格矩阵,均为20行24列#4.画等高线c=plt.contour(X,Y,f(X,Y),10,colors='k')#5.在等高线旁标注数值plt.clabel(c,inline=True,fontsize=10)#6.填充颜色plt.contourf(X,Y,f(X,Y),3,cmap=plt.cm.spring,alpha=0.3)plt.axis('off') #不显示数轴等高线反映数值的变化,也可称为等值线。等值线可以直观的表示二元函数的变化趋势,例如在等值线密集的地方表示函数值在此区域变化较快。二、绘制等高线图deff(x,y,w=5,sigma=2):returnnp.sin(w*x)**2*np.sin(w*y)**2*np.exp((x+y)/sigma)n=256a=np.linspace(0,3,n)b=np.linspace(0,3,n)X,Y=np.meshgrid(a,b)C=plt.contour(X,Y,f(X,Y),8,colors='black')
#等高线plt.contourf(X,Y,f(X,Y),8,alpha=0.3)
#着色plt.clabel(C,fontsize=10)
#标注数值等高线图可用于机器学习算法中的决策区域绘制,contour()绘制决策边界线,contourf()给决策区域着色。例如,假定有一个分类问题已求解出分类的判断公式为y=2x1+x2+3,x1和x2是两组自变量。如果公式计算结果大于等于0则归为1类,计算结果小于0则归为-1类,绘制决策区域如下二、绘制等高线图deff(x1,x2):returnnp.where(2*x1+x2+3>=0,1,-1)n=300a=np.linspace(-3,3,n)b=np.linspace(-3,3,n)X,Y=np.meshgrid(a,b)C=plt.contour(X,Y,f(X,Y),colors='b') #f()只有1和-1两个值,将只绘制1条等高线plt.contourf(X,Y,f(X,Y),alpha=0.3) #整个区域只有两种值,着色后分为两部分plt.text(-2.8,-2,'y=-1负类',fontsize=16)plt.text(0.5,1,'y=1正类',fontsize=16)plt.text(-1,-0.9,'$y=2x1+x2+3$',fontsize=16) 绘制3D图表需要将Axes子图设为三维坐标系,主要有两种设置方法。一种是创建子图时指定参数projection='3d',另一种是先导入mpl_toolkits.mplot3d模块中的Axes3D对象,然后利用Axes3D对象将画布转为3D模式。第5节
3绘图D#
方法一、利用'3d'参数ax=plt.subplot(projection='3d') #创建子图时指定3d参数(d为小写字母)#
方法二、利用Axes3D类frommpl_toolkits.mplot3dimportAxes3Dfig=plt.gcf()
#获取当前画布figax=Axes3D(fig,auto_add_to_figure=False) #将fig转为3D,返回一个Axesfig.add_axes(ax) #将ax加入fig在3D空间绘制散点图也使用scatter()函数,在x轴和y轴坐标之后再添加z轴坐标,使用三元有序数对在3D空间内定位散点。一、3D散点图和3D折线图ax=plt.subplot(projection="3d") #创建3d子图xs=np.random.rand(100)*10 #随机数据点坐标ys=np.random.rand(100)*10+20zs1=np.random.rand(100)*10zs2=np.sqrt(xs**2+ys**2)#第一组3D散点图ax.scatter(xs,ys,zs=zs1,zdir="z",c="b",marker="D",s=40,alpha=0.5)#第二组3D散点图ax.scatter(xs,ys,zs=zs2,zdir="z",c="cyan",marker="*",s=40)ax.set_xlabel('X',fontsize=16) #设轴标签ax.set_ylabel('Y',fontsize=16)ax.set_zlabel('Z',fontsize=16) 一、3D散点图和3D折线图frommpl_toolkits.mplot3dimportAxes3D#导入Axes3Dz=np.linspace(0,13,1000)x=5*np.sin(z)y=5*np.cos(z)zd=13*np.random.random(100)xd=5*np.sin(zd)yd=5*np.cos(zd)fig=plt.figure(figsize=(8,6)) #新建画布#创建一个3DAxes,这是mpl3.5版的建议写法ax=Axes3D(fig,
auto_add_to_figure=False) fig.add_axes(ax
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心衰护理新知识
- 四上数学8.4 统计图(一格代表多个单位)
- 会计入门培训
- 刑事案件办案程序规定培训
- 创伤性眩晕的诊断和治疗
- 基本安全培训
- 学防疫知识悟感人事迹
- 心理护理学中的人格探究
- 中国智慧城市轨道交通行业发展状况与投资前景规划分析报告2025-2030年
- 头皮专业知识培训课件
- 2025-2030中国融资租赁行业发展分析与投资战略研究报告
- 2024年北京市统计局招聘事业单位考试真题
- 2025年“铸牢中华民族共同体意识”应知应会知识竞测试赛题
- 2025年四川宜宾三中高三二模高考数学模拟试卷(含答案)
- 入职培训测试题及答案
- 境外项目合作居间协议书范本
- 网格员矛盾纠纷培训
- 2025年河南经贸职业学院单招职业技能测试题库学生专用
- GB/T 1346-2024水泥标准稠度用水量、凝结时间与安定性检验方法
- 2024年襄阳汽车职业技术学院高职单招职业技能测验历年参考题库(频考版)含答案解析
- 医疗机构性侵防护制度与措施
评论
0/150
提交评论