《Python从入门到数据分析应用》 课件 第11章 Matplotlib、Seaborn_第1页
《Python从入门到数据分析应用》 课件 第11章 Matplotlib、Seaborn_第2页
《Python从入门到数据分析应用》 课件 第11章 Matplotlib、Seaborn_第3页
《Python从入门到数据分析应用》 课件 第11章 Matplotlib、Seaborn_第4页
《Python从入门到数据分析应用》 课件 第11章 Matplotlib、Seaborn_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

Python程序设计——从入门到数据分析PYTHONMatplotlib第十一章11.1图形中的组成元素11.2图形的层次11.3绘制图表要素11.3.1sin(x)曲线11.3.2坐标轴的长度和范围11.3.3线条的属性11.3.4刻度、坐标与标签11.4子图11.5基本图形绘制11.0MatplotlibMatplotlib是Python的绘图库,适合交互式制图。也可以将它作为绘图控件嵌入到GUI(GraphicsUserInterface)应用程序中。导入Matplotlib模块使用下面语句:importmatplotlib.pyplotasplt或者frommatplotlibimportpyplotasplt11.1

图形中的组成元素主要包括坐标轴标签(x轴标签、y轴标签)、标题、主刻度、次刻度、图例、图形的标注以及背景模式等,如图11.1所示。图11.1图中的组成元素图形中的组成元素11.2图11.2图形的层次Matplotlib中常用的绘图模块是matplotlib.pyplot模块,MatplotlibAPI(ApplicationProgrammingInterface,应用程序编程接口)包含有三层,第一层backend_bases.FigureCanvas为图表的绘制区域(画布);第二层backend_bases.Renderer(渲染器),用于将数据绘制到画布中。前两个需要处理底层的绘图操作,而普通用户更关注第三层artist.Artist。Artist主要控制Renderer将图片绘制到FigureCanvas中,例如:处理图表、文字和曲线等的绘制和布局。图形的层次11.3绘制图表要素

importnumpyasnp importmatplotlib.pyplotasplt#%matplotlibinlineplt.rcParams['axes.unicode_minus']=Falseplt.rcParams['font.family']=['sans-serif']plt.rcParams['font.sans-serif']=['SimHei']Fs=360sample=360x=np.arange(sample)y=np.sin(2*np.pi*x/Fs)plt.plot(x,y)#绘图plt.title('sinecurve’)plt.xlabel('xaxis')plt.ylabel('yaxis')plt.text(200,0,'f(x)=sin(x)')#plt.text()为坐标图添加注释,

200,0是注释的坐标plt.legend(labels=['sinefunction'])#图例下面主要从刻度、坐标轴、标签字体、线条属性的设置以及图例几个方面了解绘图要素的使用。【例11.1】绘制sin(x)曲线11.3.1sin(x)曲线11.311.3.2坐标轴的长度和范围例1:importpylabpylab.axis()Out[3]:(0.0,1.0,0.0,1.0)格式:(xmin,xmax,ymin,ymax)例2:importpylabpylab.axis()ax=[-1,1,-10,10]axis(ax)plt.show()如果axis()的范围比数据集合中的最大值小,则无法在图中看到所有数据点。pyplot.autoscale()方法:计算坐标轴的最佳大小以适应数据的显示。11.311.3.3线条的属性属性描述color或c设置线条颜色label为图例设置标签值linestyle或ls设置线条风格linewidth或lw设置以点为单位的线的宽度marker设置线条标记表11.1线条的属性参数颜色参数颜色rredccyanggreenmmagentabblueyyellowwwhitekblack表11.2线条的颜色线条的属性主要包括:线条颜色、线条标记与线条风格。11.311.3.3线条的属性参数含义参数含义'.'pointmarker's'squaremarker','pixelmarker'p'pentagonmarker'o'circlemarker'*'starmarker'v'triangle_downmarker'h'hexagon1marker'^'triangle_upmarker'H'hexagon2marker'<'triangle_leftmarker'+'plusmarker'>'triangle_rightmarker'x'xmarker'1'tri_downmarker'D'diamondmarker'2'tri_upmarker'd'thin_diamondmarker'3'tri_leftmarker'|'vlinemarker'4'tri_rightmarker'_'hlinemarker线型描述'-'实线'--'虚线'-.'点划线':'点线表11.4线条的风格表11.3线条的标记11.311.3.4刻度与坐标frompylabimport*#返回当前坐标ax=gca()#设置紧凑视图,设置刻度间隔最大为10#ax.locator_params(tight=True,nbins=10)#生成100个正态分布值ax.plot(np.random.normal(10,.1,100))1.设置坐标11.311.3.4刻度与坐标importnumpyasnpimportmatplotlib.pyplotaspltFs=360sample=360x=np.arange(sample)y=np.sin(2*np.pi*x/Fs)plt.plot(x,y)plt.plot(x,y,'--',color='r')plt.xticks(np.array([0,60,120,180,240,300,360]))plt.yticks(np.arange(min(y),max(y)+0.1,0.5))2.设置刻度示例一:11.311.3.4刻度与坐标程序:plt.plot([1,2,3,4],[1,4,9,16],‘ro’)#红圈

plt.axis([0,6,0,20])plt.show()

num1=0num2=20plt.xlim(num1,num2)plt.ylim(ymin=num1,ymax=num2)2.设置刻度示例二:11.311.3.4刻度与坐标font2={'family':'TimesNewRoman','weight':'normal','size':30,}plt.xlabel('round',font2)plt.ylabel('value',font2)

3.标签字体设置11.311.3.5绘制子图【例11.2】创建两个子图,子图1绘制sin(x),子图2绘制cos(x)。importmatplotlib.pyplotaspltimportnumpyasnpimportmatplotlibasmplmpl.rcParams["font.sans-serif"]=["SimHei"]mpl.rcParams["axes.unicode_minus"]=FalseFs=360sample=360x=np.arange(sample)y1=np.sin(2*np.pi*x/Fs)y2=np.cos(2*np.pi*x/Fs)11.4绘制子图#绘制第一子图plt.subplot(1,2,1)plt.plot(x,y1)plt.title('sin(x)')plt.xlabel('Xlabel')plt.legend(['sin(x)'],loc='upperright')#绘制第二子图plt.subplot(1,2,2)plt.plot(x,y2)plt.title('cos(x)')plt.xlabel('Xlabel')plt.legend(['cos(x)'],loc='best')#自动调整子图间距plt.tight_layout()plt.suptitle('函数曲线',fontsize=16,color='b',alpha=0.5)11.5基本图形绘制1.柱状图2.直方图3.散点图4.箱线图11.5基本图形绘制1.柱状图【例11.3】绘制柱状图,x,y轴分别表示小组序号与学生人数。importmatplotlibasmplimportmatplotlib.pyplotaspltmpl.rcParams["font.sans-serif"]=["SimHei"]mpl.rcParams["axes.unicode_minus"]=Falsex=[1,2,3,4,5,6,7,8]y=[3,5,7,10,8,6,4,2]plt.bar(x,y,align="center",color="c",tick_label=x)plt.xlabel("小组序号")plt.ylabel("学生人数")plt.show()11.5基本图形绘制【例11.4】绘制直方图,x,y轴分别表示物体重量与每个重量对应的数目。

importmatplotlibasmplimportmatplotlib.pyplotaspltmpl.rcParams["font.sans-serif"]=["SimHei"]mpl.rcParams["axes.unicode_minus"]=Falseimportnumpyasnpweight=np.random.randint(0,10,100)x=weightbins=range(0,10,1)plt.hist(x,bins=bins,color="b",histtype="bar",rwidth=1,alpha=0.5)plt.xlabel("物体重量")plt.ylabel("数目")plt.show()2.直方图图11.14rwidth分别为1和0.8的直方图11.5基本图形绘制3.散点图importmatplotlib.pyplotaspltimportnumpyasnpx=np.random.randn(100)#nocorrelationy1=np.random.randn(len(x))#correlationy2=np.exp(x)ax1=plt.subplot(121)plt.scatter(x,y1,label='nocorrel')#散点图plt.xlabel('nocorrelation')plt.grid(True) #设置背景网格plt.legend() #生成图例ax2=plt.subplot(122,sharey=ax1,sharex=ax1)plt.scatter(x,y2,label='correl')plt.xlabel('correlation')plt.grid(True)plt.legend()plt.show()【例11.5】生成100个随机数,子图1显示随机数的分布,子图2显示随机数的指数分布,通过绘图了解数据之间的相关性。11.5基本图形绘制【例11.6】下面是一个传感器采集数据文件sensor.txt的内容。其中,每行是一条记录,逗号分隔多个属性。属性包括日期、时间、温度、湿度、光照、电压。其中,温度处于第3列。文件数据内容如下所示。date,time,temp,humi,light,volt2021-01-012,20:03:16.01235,19.2024,26.4629,46.05,3.587722021-01-012,20:06:16.01553,19.1752,26.8039,46.05,3.587722021-01-012,20:06:46.73806,19.185,26.8379,46.05,3.58952(1)以读入文件的形式编写程序,统计并输出温度的平均值。(2)作图显示温度的变化。11.5基本图形绘制read_csv:从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为逗号。read_table:从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为制表符(“\t”)#(1)输出温度的平均值importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltimportseabornassnsf=open('D:/sensor.txt','r',encoding='UTF-8')data=pd.read_table(f,sep=',')data.head()data_mean=data['temp'].mean()print(data_mean)#(2)显示温度的变化plt.plot(data['time'],data['temp'])plt.show()11.5基本图形绘制【例11.7】生成100个随机数,用箱线图显示数据的分布。importmatplotlibasmplimportmatplotlib.pyplotaspltimportnumpyasnpmpl.rcParams["font.sans-serif"]=["FangSong"]mpl.rcParams["axes.unicode_minus"]=Falsex=np.random.randn(100)plt.boxplot(x)plt.xticks([1],["生成随机数"])plt.ylabel("随机数值")plt.title("随机数的分布")plt.grid(axis="y",ls=":",lw=3,color="gray",alpha=0.2)plt.show()Matplotlib知识点回顾图形的组成及绘制要素绘制图形的要素绘图:plt.plot()子图:plt.subplot()新建空图:plt.figure()坐标轴:pylab.axis()刻度:plt.xticks()plt.yticks()

标题:plt.title()子图标题:plt.suptitle()x轴标签:plt.xlabel()y轴标签:plt.ylabel()图例:plt.legend()自动调整子图间距plt.tight_layout()线条的属性导入Matplotlib:importmatplotlib.pyplotasplt图1图形的组成绘制子图Matplotlib【例11.8】读入鸢尾花数据集并绘制折线图、直方图、散点图和盒图。图3用iris数据集绘制子图绘制子图Matplotlib【例11.9】读入鸢尾花数据集并绘制折线图、直方图、散点图和盒图。箱线图(boxplot):也叫盒图,用于显示数据的离散分布情况,它由五个数值点组成:最小值(min),下四分位数(Q1),中位数(median),上四分位数(Q3),最大值(max)。由于真实数据中存在“离群点”,为了避免数据的整体特征受个别离群点影响而偏移,则将离群点单独绘出。在盒图中,两端的胡须分别表示最小观测值与最大观测值。最大(最小)观测值设置为四分位数值间距离IQR的1.5倍。箱线图结构如图4所示。图4箱线图Python程序设计——从入门到数据分析PYTHON第十一章seaborn11.6seaborn简介11.7seaborn基本绘图11.7.1统计关系可视化11.7.2分类数据可视化11.7.3分布数据可视化11.7.4可视化线性关系11.8例题11.6seaborn简介

Matplotlib:参数多;seaborn:

基于Matplotlib核心库进行了更高级的API封装,seaborn能简化复杂绘图,用简单的语句轻松地画出更美观的图形。seaborn是一个基于

matplotlib

,数据结构与

pandas

统一的统计图制作库。11.6

seaborn功能与特点11.6

常见图形种类5.核密度图6.直方图7.点对图8.回归图1.散点图2.盒图3.小提琴图4.柱状图11.7seaborn基本绘图

11.7.1可视化统计关系

统计分析是了解数据集中的变量如何相互关联以及这些关系如何依赖于其他变量的过程。常用的三个函数如下:11.7

11.7.1可视化统计关系11.7

11.7.1可视化统计关系11.7

autofmt_xdate():改变x轴坐标的显示方式,可以倾斜显示11.7.1可视化统计关系11.7

cumsum()这个函数的功能是返回给定axis上的累计和函数的原型cumsum()11.7.1可视化统计关系11.7

11.7.2分类数据绘图catplot()(1)分类散点图catplot(kind=“strip”),默认catplot(kind=“swarm”)#蜂群图(2)分类观测分布图catplot(kind=“box”)catplot(kind=“violin”)(3)分类统计估计图catplot(kind=“bar”)catplot(kind=“count”)展示每个分类下观测值的数量11.7

(1)分类散点图11.7

盒图

箱线图(boxplot):也叫盒图,用于显示数据的离散分布情况,它由五个数值点组成:最小值(min),下四分位数(Q1),中位数(median),上四分位数(Q3),最大值(max)。由于真实数据中存在“离群点”,为了避免数据的整体特征受个别离群点影响而偏移,则将离群点单独绘出。在盒图中,两端的胡须分别表示最小观测值与最大观测值。最大(最小)观测值设置为四分位数值间距离IQR的1.5倍。箱线图结构如图4所示。(2)分类观测分布图11.7(1)盒图seaborn的主题:darkgrid黑色网格(默认)whitegrid白色网格dark黑色背景white白色背景小提琴图将盒图与核密度图相结合。sns.violinplot(x=tips["total_bill"])(2)小提琴图(2)分类观测分布图11.7

(2)分类观测分布图

11.7

(2)分类观测分布图11.7

(3)分类统计估计图11.7

11.7.3分布数据可视化(1)单变量分布

在seaborn中,单变量分布的常用dis

温馨提示

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

评论

0/150

提交评论