版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《Python医学数据分析(微课版)》第六章使用Matplotlib进行数据可视化分析本章学习目标本章学习目标:(1)了解Matplotlib的基本概念和功能;(2)掌握Matplotlib的基本绘图命令和语法;(3)熟练掌握创建折线图、散点图、柱状图和饼状图的绘图函数,并能够解决实际问题;(4)掌握创建雷达图、气泡图、热力图、三维曲线(面)图和词云图的绘图函数;(5)掌握构建图矩阵的语法,并应用于数据可视化实践。第六章使用Matplotlib进行数据可视化分析本章学习目标在本章中,我们将探讨Python的另一个重要第三方库——Matplotlib。作为一个广受欢迎的绘图工具,Matplotlib为Python用户提供了强大的数据可视化功能。利用该库,用户能够设计并生成各式各样的图表和图形,同时,它还提供了细致的定制选项,包括坐标轴的调整、添加标签和标题、编辑图例以及设置数据点的样式和颜色等。作为数据分析和科学计算领域的核心工具之一,Matplotlib能够满足从基础的数据可视化到复杂图形设计的各种需求。本章将介绍包括线图、散点图、柱状图、饼状图、雷达图、气泡图、热力图、三维曲线(面)图和词云图在内的九种图形的基本创建方法,及构建图矩阵,以期满足不同的数据分析情况。第六章使用Matplotlib进行数据可视化分析内容导航CONTENTS绘制折线图Matplotlib基本概念及功能绘制散点图绘制柱状图6.16.2绘制饼状图绘制雷达图6.36.46.56.6绘制气泡图6.7绘制热力图6.8绘制三维曲线(面)绘制词云图构建图矩阵6.96.106.116.1Matplotlib基本概念及功能在使用Matplotlib绘图前,应该确保已经安装Matplotlib,可使用pip命令进行安装,具体指令如下:
pipinstallmatplotlib
pyplot模块是Matplotlib的一个子模块,它为数据可视化提供了一种简单而方便的接口。pyplot模块可以创建各类图表,如折线图、散点图、柱状图等,以及添加标题、标签和网格等元素来增强图表的可读性。pyplot模块的引用方式如下:importmatplotlib.pyplotasplt绘制图像时若需要使用NumPy库和Pandas库,则应使用pip命令进行安装:pipinstallnumpypipinstallpandas第六章使用Matplotlib进行数据可视化分析6.1Matplotlib基本概念及功能此外,为了使图像能够正确显示并提高图像清晰度,还应该使用以下代码进行配置:%matplotlibinline
在JupyterNotebook或其他交互式环境中运行时,需要在代码开头添加此行以正确显示图形:
%configInlineBackend.figure_format='retina'
设置内嵌图形分辨率,retina可以提高图像清晰度。在绘图过程中,我们需要了解和掌握Matplotlib的基本函数与绘图函数,具体内容见表6-1、6-2。表6-1Matplotlib基本函数及功能第六章使用Matplotlib进行数据可视化分析函数功能plt.figure()创建画布plt.subplot(nrows,ncols,index)划分子图plt.savefig()保存为图片plt.show()显示图像plt.tight_layout()自动调整子图间距6.1Matplotlib基本概念及功能第六章使用Matplotlib进行数据可视化分析函数功能plt.plot(x,y,label,legend,color,linewidth,linestyle,alpha)根据x,y数组绘制直/曲线plt.bar(left,height,width,bottom)绘制一个柱状图plt.barh(bottom,width,height,left)绘制一个横向柱状图plt.hist(x,bins,normed)绘制直方图plt.pie(data,explode)绘制饼状图plt.boxplot(data,notch,position)绘制一个箱形图(box-plot)plt.scatter(x,y)绘制散点图(x、y是长度相同的序列)plt.polar(theta,r)绘制极坐标图plt.step(x,y,where)绘制步阶图plt.cohere(x,y,NFFT=256,FS)绘制x、y的相关性函数plt.specgram(x,NFFT=256,pad_to,F)绘制谱图表6-2Matplotlib绘图函数及功能6.1Matplotlib基本概念及功能函数功能plt.psd(x,NFFT=256,pad_to,Fs)绘制功率谱密度图plt.contour(x,y,z,n)绘制等值线plt.vlines()绘制垂直线plt.stem(x,y,linefmt,markerfmt,basefmt)绘制曲线上每个点到水平轴线的垂线plt.plot_date()绘制数据日期plt.plotfile()绘制数据后写入文件第六章使用Matplotlib进行数据可视化分析续表6-2内容导航CONTENTS绘制散点图绘制柱状图绘制折线图6.2Matplotlib基本概念及功能6.1绘制饼状图绘制雷达图6.36.46.56.6绘制气泡图6.7绘制热力图6.8绘制三维曲线(面)绘制词云图构建图矩阵6.96.106.116.2绘制折线图折线图是一种以线段连接各数据点的图表类型,用以表示数据随时间或其他连续变量的变化趋势。通过折线图,我们可以直观地观察数据的增减变化,便于比较和分析。在pyplot模块中使用plot()函数绘制折线图,调用的基本语法格式如下:plt.plot(x,y,label,color,width)plot()函数的参数主要如下。•x:指定x坐标的数据,可以是NumPy数组。•y:指定y坐标的数据,可以是NumPy数组。•label:表示为线条设置标签。•legend:表示设置图例。•color:表示设置线条颜色.•linewidth或lw:设置线条宽度。•linestyle或ls:设置线条标记样式。•alpha:表示设置点的透明度,取值范围为0~1。第六章使用Matplotlib进行数据可视化分析6.2绘制折线图例6-1:使用Matplotlib库绘制折线图。第六章使用Matplotlib进行数据可视化分析importmatplotlib.pyplotasplt#导入matplotlib库中的pyplot模块,并将其重命名为pltx=[1,3,5,7,9,11]#创建数据y=[20,4,25,10,15,32]plt.plot(x,y)#使用plot()函数绘制折线图plt.show()#使用show()函数显示图像代码执行结果如图6-1所示。图6-1折线图示例6.2绘制折线图例6-2:请绘制0到10之间的正弦函数和余弦函数图像,要求正弦函数线条颜色为蓝色,余弦函数线条颜色为红色。代码如下:第六章使用Matplotlib进行数据可视化分析importmatplotlib.pyplotasplt
importnumpyasnp
#导入NumPy库,并将其重命名为npx=np.linspace(0,10,1000)
#linspace返回1000个0-10均匀分布的样本y_sin=np.sin(x)
#计算正弦值y_cos=np.cos(x)
#计算余弦值plt.plot(x,y_sin,color='b',label='sin(x)')
#使用plot()函数绘制正弦函数图像plt.plot(x,y_cos,color='r',label='cos(x)')
#使用plot()函数绘制余弦函数图像plt.legend()
#添加图例plt.show()
6.2绘制折线图思考:请问还可以设置线条的哪些颜色和样式呢?详见表6-3。表6-3参数设置第六章使用Matplotlib进行数据可视化分析符号描述符号描述符号描述b蓝色‘-’实线样式‘o’圆圈标记g绿色‘--’虚线样式‘s’方形标记r红色‘-.’点划线样式‘p’五边形标记c青色‘:’虚线样式‘8’八角形标记m品红色‘.’点标记‘*’星型y黄色‘,’像素标记‘h’hexagon1标记k黑色‘˅’triangle_down标记‘H’hexagon2标记w白色‘˄’triangle_up标记‘+’加号标记‘1’tri_down标记‘˂’triangle_left标记‘x’x标记‘2’tri_up标记‘˃’triangle_right标记‘X’x(填充)标记‘3’tri_left标记‘|’垂直线标记‘D’钻石标记‘4’tri_right标记‘_’水平线标记‘d’薄钻石标记6.2绘制折线图例6-3:请根据表6-4绘制折线图,其中,医院总数线条颜色为黄色,综合医院数为蓝色,中医医院为红色,专科医院用绿色;数据节点使用方形并添加图例。表6-42010年—2021年医院数第六章使用Matplotlib进行数据可视化分析年份医院总数综合医院中医医院专科医院2010209181368127783956201121979143282831428320122317015021288946652013247091588730155127201425860165243115547820152758717430326760232016291401802034626642201731056189213695722020183300919693397779002019343541996342218531202035394201334426902120213657020307463096996.2绘制折线图代码如下:第六章使用Matplotlib进行数据可视化分析importmatplotlib.pyplotaspltdata=[(2010,20918,13681,2778,3956),#录入数据
(2011,21979,14328,2831,4283),……
(2021,36570,20307,4630,9699)]years=[x[0]forxindata]#获取第一列数据作为年份Total_hospitals=[x[1]forxindata]#获取第二列数据作为医院总数general_hospitals=[x[2]forxindata]#获取第三列数据作为综合医院数traditional_chinese_medicine_hospitals=[x[3]forxindata]#获取第四列数据作为中医院数specialty_hospitals=[x[4]forxindata]#获取第五列数据作为专科医院数plt.figure()#创建画布6.2绘制折线图代码如下:第六章使用Matplotlib进行数据可视化分析plt.plot(years,Total_hospitals,label='医院总数',marker='s',color='y')#绘制医院总数图像plt.plot(years,general_hospitals,label='综合医院',marker='s',color='b')#绘制综合医院图像plt.plot(years,traditional_chinese_medicine_hospitals,label='中医医院',marker='s',color='r')#绘制中医医院图像plt.plot(years,specialty_hospitals,label='专科医院',marker='s',color='g')#绘制专科医院图像plt.xticks(years)#设置x轴刻度为年份plt.xlabel('年份')#设置x轴标签plt.ylabel('医院数量/(个)')#设置y轴标签plt.title('2010-2021年各类医院数量变化')#设置图像标题plt.legend()#添加图例plt.show()6.2绘制折线图代码执行结果如图6-3所示。第六章使用Matplotlib进行数据可视化分析图6-32010-2021年各类医院数量变化内容导航CONTENTS绘制散点图6.3绘制折线图Matplotlib基本概念及功能绘制柱状图6.16.2绘制饼状图绘制雷达图6.46.56.6绘制气泡图6.7绘制热力图6.8绘制三维曲线(面)绘制词云图构建图矩阵6.96.106.11Matplotlib基本概念及功能6.16.3绘制散点图散点图,又称点图,是一种将数据点在二维坐标系中以点的形式表示出来的图表类型。每个点的位置由其两个变量的数值决定,通常横坐标和纵坐标分别代表不同的数据维度。散点图适用于展示两个变量之间的关系,可以用来识别数据点的模式、趋势和异常值,并能够帮助分析变量之间的相关性或因果关系。通过观察点的分布形态,可以发现变量之间的线性或非线性关系,以及可能的聚类或散布现象。在pyplot子库中使用scatter()函数绘制散点图,调用的基本格式如下:plt.scatter(x,y,s=None,c=None,marker=None,linewidth=None,alpha=1)其中,各部分表示含义如下:•x,y:是必须的参数,用来指定散点的x和y坐标;•s:指定每个散点的大小;•c:指定每个散点的颜色;•marker:指定每个散点的形状,如点、星星、三角形等;•linewidth或lw:指定每个散点的宽度。第六章使用Matplotlib进行数据可视化分析6.3绘制散点图例6-4:使用Matplotlib库绘制散点图。代码执行结果如图6-4所示。第六章使用Matplotlib进行数据可视化分析importmatplotlib.pyplotaspltx=[1,2,3,4,5,6,7,8,9,10]#创建数据y=[2,5,7,6,7,8,11,8,10,11]plt.scatter(x,y,color='r',s=100)#使用scatter()函数绘制散点图plt.show()图6-4散点图示例6.3绘制散点图例6-5:请绘制两个包含1000个随机数的数组所构成的散点图。第六章使用Matplotlib进行数据可视化分析importmatplotlib.pyplotaspltimportnumpyasnp#导入NumPy库,并将其重命名为npdt1=np.random.randn(1000)#创建包含1000个随机数的数组dt2=np.random.randn(1000)plt.scatter(x=dt1,y=dt2,s=10,marker='*',alpha=0.4)#使用scatter()函数绘制散点图,s表示点的大小,marker表示点的样式,alpha表示透明度plt.show()代码执行结果如图6-5所示。图6-51000个随机数生成的散点图内容导航CONTENTS绘制折线图Matplotlib基本概念及功能绘制散点图6.16.2绘制饼状图绘制雷达图6.36.56.6绘制气泡图6.7绘制热力图6.8绘制三维曲线(面)绘制词云图构建图矩阵6.96.106.11Matplotlib基本概念及功能6.1绘制柱状图6.46.4绘制柱状图柱状图,也称为条形图,是一种常用的数据可视化工具,以长方形的长度来表示各种数据量的大小,其中长方形的宽度通常固定,高度则根据数据的大小而变化;而与柱状图在视觉上相似,直方图则采用了连续的矩形条来描绘数据的频数分布,柱状图适用于对比不同类别或组之间的数据,可以清晰地展示各个类别的数量、比例或增长情况。通过观察柱子的高度,可以直观地比较数据的大小,发现数据之间的差异和趋势。柱状图适合于展示分类数据,是最直观的数据展示方式之一。直方图是一种统计图表,通过一系列连续的矩形条来展示数据的分布情况,其中每个矩形的高度代表数据在相应区间内的频数或频率,横轴表示数据的数值范围,而纵轴表示频数或频率,它主要用于揭示数据的分布形态、中心趋势和离散程度,是数据分析中观察连续变量分布特征的重要工具。第六章使用Matplotlib进行数据可视化分析6.4绘制柱状图在pyplot子库中使用bar()函数绘制柱状图,调用的基本格式如下:plt.bar(x,height,width=0.8,bottom=None,align='center')其中,各部分表示含义如下:•x:表示x坐标轴;•height:表示y坐标轴;•width:表示柱形宽度,默认值为0.8;•bottom:表示柱形底边的y坐标,默认值为0;•align:表示将柱形对齐到x坐标,'center'是以x位置为中心,'edge'是将柱形的左边缘与x位置对齐。第六章使用Matplotlib进行数据可视化分析6.4绘制柱状图在pyplot模块中使用hist()函数绘制直方图,调用的基本语法格式如下:plt.hist(x,bins=None,density=False,bottom=None,histtype='bar',align='mid',orientation='vertical',rwidth=None,color=None,label=None,alpha=1)hist()函数的参数主要如下。•x:表示绘制直方图的数据。•bins:指定直方图的分组数量。•density:如果为True,则返回每个bin的频率而非频数;如果为False,则返回频数。•bottom:表示在直方图的顶部添加一个底部值。•histtype:指定直方图的类型,可以是'bar'、'barstacked'、'step'、'stepfilled'。•align:设置bin的边界,'left'(默认)表示左边界,'mid'表示中间。•orientation:设置直方图的方向,可为垂直方向('vertical',默认)或水平方向('horizontal')。•width:设置直方图的宽度,以非百分比的形式出现,当取值为0.9时,表示条柱宽度是其所在数据区间宽度的90%(默认值为1.0,即条柱占满整个数据区间)。•color:设置直方图的颜色。•label:设置直方图的标签。第六章使用Matplotlib进行数据可视化分析6.4绘制柱状图例6-6:表6-5所示为2021年医院数,请绘制柱状图。表6-52021年医院数第六章使用Matplotlib进行数据可视化分析importmatplotlib.pyplotasplthospital_levels=['一级医院','二级医院','三级医院']#创建数据hospital_counts=[12649,10848,3275]plt.bar(hospital_levels,hospital_counts,width=0.5)#使用bar()函数绘制柱状图,宽度为0.5plt.title('2021年医院数')#设置图像标题plt.xlabel('医院分类')#设置x轴标签plt.ylabel('数量(个)')#设置y轴标签plt.show()医院分类医院数/个一级医院12649二级医院10848三级医院32756.4绘制柱状图代码执行结果如图6-6所示。第六章使用Matplotlib进行数据可视化分析图6-6柱状图示例6.4绘制柱状图例6-7:请随机生成10000个数,并绘制直方图。第六章使用Matplotlib进行数据可视化分析importmatplotlib.pyplotaspltimportnumpyasnpdata=np.random.randn(10000)#创建数据,生成一个包含10000个随机数的数组plt.hist(data,bins=10,color='b',alpha=0.7)#使用hist()函数绘制直方图,bins参数用于指定直方图的分组数量plt.show()代码执行结果如图6-7所示。图6-7直方图示例内容导航CONTENTS绘制折线图Matplotlib基本概念及功能绘制散点图绘制柱状图6.16.2绘制雷达图6.36.46.6绘制气泡图6.7绘制热力图6.8绘制三维曲线(面)绘制词云图构建图矩阵6.96.106.11Matplotlib基本概念及功能6.1绘制饼状图6.56.5绘制饼状图第六章使用Matplotlib进行数据可视化分析饼状图,又称为圆形图或饼图,是一种以圆形区域来展示数据比例关系的图表类型。整个圆被划分为若干个扇形区域,每个扇形的大小对应着数据中一个类别的比例或百分比。饼状图主要用于展示各部分数据在整体中的占比,便于观察各部分之间的相对大小和比例关系。通过饼状图,可以直观地了解各个分类在总数中所占的比例,以及各部分之间的对比情况。在pyplot子库中使用pie()函数绘制饼状图,调用的基本格式如下:plt.pie(x,explode=None,labels=None,colors=None,autopct=None,shadow=False,labeldistance=1.1,startangle=None,radius=None,counterclock=True)6.5绘制饼状图其中,常用参数表示含义如下:•x:表示绘制饼图的数据;•explode:表示每个扇形偏移量;•labels:每个扇形对应的标签;•colors:制定扇形颜色;•autopct:用于标记扇形,标签将放在扇形内;•shadow:为True时表示为扇形添加阴影;•labeldistance:扇形标签距饼图中心的距离;•startangle:起始绘制角度,默认是从x轴逆时针方向开始;•radius:饼状图的半径;•counterclock:是否使用逆时针方向绘制。第六章使用Matplotlib进行数据可视化分析6.5绘制饼状图例6-8:已知市面上有四种药品出售,出售A药所获盈利占总收入的25%,出售B药所获盈利占总收入的35%,出售C药所获盈利占总收入的15%,出售D药所获盈利占总收入的25%,请根据已知信息绘制饼状图。代码如下:第六章使用Matplotlib进行数据可视化分析importmatplotlib.pyplotaspltex=(0,0.1,0,0)#设置每个扇形的偏移量plt.pie([25,35,15,25],labels=['A药','B药','C药','D药'],autopct='%1.1f%%',explode=ex)#使用pie()函数绘制饼状图,[25,35,15,25]表示每个扇形面积,labels设置标签,autopct为设置每个扇区显示百分比格式的参数,explode表示每个扇形的偏移量plt.axis('equal')#使用axis()函数设置坐标轴比例,当设置为'equal'时,表示x轴和y轴的刻度值之间的比例关系为1:1,避免图形变形。plt.show()6.5绘制饼状图代码执行结果如图6-8所示。第六章使用Matplotlib进行数据可视化分析图6-8饼状图示例内容导航CONTENTS绘制折线图Matplotlib基本概念及功能绘制散点图绘制柱状图6.16.2绘制饼状图6.36.46.5绘制气泡图6.7绘制热力图6.8绘制三维曲线(面)绘制词云图构建图矩阵6.96.106.11Matplotlib基本概念及功能6.1绘制雷达图6.66.6绘制雷达图第六章使用Matplotlib进行数据可视化分析雷达图,也称为多变量图或蜘蛛图,是一种以多个坐标轴来展示多个定量变量的图表类型。每个坐标轴代表一个变量,坐标轴上的数据点表示该变量的数值。雷达图适用于展示多个变量之间的相对大小和关系,可以通过比较各个坐标轴上的数据点来分析数据集中的多个维度。雷达图特别适合用于展示具有多个定量变量的数据,可以帮助用户理解多个变量如何相互关联,以及每个变量在整体中的位置和作用。雷达图的主要元素如下。•坐标轴:每个变量对应一条射线或轴线,射线从中心点向外延伸构成坐标轴。射线的长度或与极径所形成夹角的角度表示该变量的大小或比例。•数据点:在每条射线上,根据变量的值确定相应的数据点的位置。•雷达链:连接各个数据点而形成的多边形或区域,用于表示多个变量之间的关系。•区域范围:雷达链所连接的区域,面积大小代表各个数据综合的结果。在pyplot模块中绘制雷达图可使用polar()函数绘制极坐标实现,调用的基本语法格式如下:polar(theta,r)•theta:表示每个数据点所在射线与极径所形成夹角的角度。•r:表示每个数据点到中心点的距离。6.6绘制雷达图例6-9:某人根据中华中医药学会标准制定的《中医体质分类与判定自测表》进行自我测评,各体质类型转化分如下:平和体质75分,气虚体质35分、阳虚体质10分、阴虚体质20分、痰湿体质50分、湿热体质35分、血瘀体质40分、气郁体质30分、特禀体质45分,请绘制雷达图。代码如下:第六章使用Matplotlib进行数据可视化分析importmatplotlib.pyplotaspltimportnumpyasnpnum=9#变量num表示数据点的数量angles=np.linspace(0,2*np.pi,num,endpoint=False)#np.linspace()函数表示产生与num个数一样的角度,范围为0到2π,np.pi表示圆周率π,endpoint表示最后一个角度值不包含在生成的数组中angles=np.concatenate((angles,[angles[0]]))#使用concatenate()函数将angles数组的第一个元素添加到数组末尾,使得图形闭合6.6绘制雷达图第六章使用Matplotlib进行数据可视化分析data=[75,35,10,20,50,35,40,30,45]#创建数据data=np.concatenate((data,[data[0]]))#使用concatenate()函数将data列表的第一个元素添加到列表末尾,使得图形闭合labels=np.array(['平和质','气虚质','阳虚质','阴虚质','痰湿质','湿热质','血瘀质','气郁质','特禀质'])#设置类别名称labels=np.concatenate((labels,[labels[0]]))#使用concatenate()函数将labels数组的第一个元素添加到数组末尾,使得图形闭合plt.polar(angles,data)#使用polar()函数绘制极坐标图,传入角度值和数据值plt.thetagrids(angles*180/np.pi,labels=labels)#使用thetagrids()函数设置极坐标图的角度刻度和标签plt.fill(angles,data,facecolor='g',alpha=0.1)#使用plt.fill函数填充极坐标图的颜色和透明度plt.plot(angles,data,'go-')#'g'表示点的颜色为绿色,'o'表示点的形状为圆形,'-'表示线型为实线plt.show()6.6绘制雷达图第六章使用Matplotlib进行数据可视化分析代码执行结果如图6-9所示。图6-9中医体质分类与判定自测表各体质类型转化分内容导航CONTENTS绘制折线图Matplotlib基本概念及功能绘制散点图绘制柱状图6.16.2绘制饼状图绘制雷达图6.36.46.56.6绘制热力图6.8绘制三维曲线(面)绘制词云图构建图矩阵6.96.106.11Matplotlib基本概念及功能6.1绘制气泡图6.76.7绘制气泡图第六章使用Matplotlib进行数据可视化分析气泡图是一种以圆形气泡的大小来表示数据点的三个变量的图表类型。在二维坐标系中,每个气泡的位置由两个变量的值决定,而气泡的大小则表示第三个变量的值。气泡图适用于展示三个变量之间的关系,可以用来比较和分析数据点在不同维度上的分布和相对大小。通过观察气泡的位置和大小,可以发现变量之间的模式、趋势和关联性。气泡图特别适合于展示多维数据,帮助人们理解三个变量如何相互影响和相互作用。在pyplot子库中同样使用scatter()函数绘制气泡图,但是它们在使用时参数s和c的设置有所不同。s:在散点图中,用于指定散点的大小,通常是固定的,表示所有点的大小相同。而在气泡图中,s参数会根据数据集中的某个值来变化,通常用来表示第三个维度的大小,比如数据集中的数量或值的大小;c:在散点图中,用于指定散点的颜色,颜色通常是固定的,或者根据某种分类来设定不同的颜色。在气泡图中,c参数也可以用来表示第四个维度,通过颜色映射来展示数据集中的另一个数值。6.7绘制气泡图第六章使用Matplotlib进行数据可视化分析例6-10:使用Matplotlib库绘制气泡图示例。代码如下:importmatplotlib.pyplotaspltimportnumpyasnpx=[1,2,3,4,5,6,7,8,9,10]#创建数据y=[109,55,39,56,73,60,19,28,130,47]colors=np.random.rand(10)#使用random.rand()函数生成10个范围为[0,1)的随机浮点数数组sizes=np.random.randint(10,500,10)#使用random.randint()函数生成10个范围为[10,500)的随机整数数组plt.scatter(x,y,s=sizes,c=colors,alpha=0.5)#使用scatter()函数绘制气泡图,s为气泡大小,c为气泡颜色,alpha为气泡透明度plt.show()6.7绘制气泡图代码执行结果如图6-10所示。第六章使用Matplotlib进行数据可视化分析图6-10气泡图示例内容导航CONTENTS绘制折线图Matplotlib基本概念及功能绘制散点图绘制柱状图6.16.2绘制饼状图绘制雷达图6.36.46.56.6绘制气泡图6.7绘制三维曲线(面)绘制词云图构建图矩阵6.96.106.11Matplotlib基本概念及功能6.1绘制热力图6.86.8绘制热力图第六章使用Matplotlib进行数据可视化分析热力图是一种以颜色渐变来表示数据密度或数值大小的图表类型。它通过不同的颜色深浅来展示数据的分布和变化,通常用于表示地理数据、人口统计、经济指标或任何需要显示集中趋势和分布范围的数据。在热力图中,颜色通常代表数值的大小,暖色调(如红色、橙色)表示高数值,冷色调(如蓝色、绿色)表示低数值。这种图表形式使人们能够直观地看出数据的聚集区域和分布模式,有助于发现数据中的热点和冷点,从而进行更深入的数据分析和决策。热力图适用于展示具有空间或地理属性的数据,帮助人们理解数据在空间上的分布和变化。6.8绘制热力图第六章使用Matplotlib进行数据可视化分析例6-11:表6-6为2000年—2021年部分地区总人口(万人),请绘制热力图描述该统计资料。表6-62000年—2021年部分地区总人口(万人)地区
年份2000年2005年2010年2015年2017年2018年2019年2020年2021年北京135715381961218821942192219021892189河北667468517194734574097426744774647448辽宁418442214375433843124291427742554229上海164117782303245824662475248124882489浙江459648985447598561706273637564686540湖南656263266570661566336635664066456622广东7707919410441116781214112348124891262412684海南78982886994597298299510121020四川860282128045819682898321835183718372云南424144504602466346934703471447224690西藏258277301330349354361366366新疆1849201021852385248025202559259025896.8绘制热力图代码如下:第六章使用Matplotlib进行数据可视化分析importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspd#导入Pandas库,并将其重命名为pdimportseabornassns#导入seaborn库,并将其重命名为sns,seaborn也是Python中的一个可视化库,可以设置图像的主题、颜色等内容。year=['2000年','2005年','2010年','2015年','2017年','2018年','2019年','2020年','2021年']#创建x轴region=['北京','河北','辽宁','上海','浙江','湖南','广东','海南','四川','云南','西藏','新疆']#创建y轴data=np.array([[1357,1538,1961,2188,2194,2192,2190,2189,2189],#存储数据
[6674,6851,7194,7345,7409,7426,7447,7464,7448],……[1849,2010,2185,2385,2480,2520,2559,2590,2589]])fig,ax=plt.subplots(figsize=(8,7))#创建子图对象,并设置图像大小6.8绘制热力图第六章使用Matplotlib进行数据可视化分析ax.set_xticks(np.arange(len(year)))#set_xticks为设置x轴刻度,np.arange(len(year))是使用NumPy库生成一个从0到len(year)-1的整数序列,作为x轴刻度的值ax.set_yticks(np.arange(len(region)))#设置y轴刻度heat_map=sns.heatmap(data,annot=True,fmt='.0f',cmap='Blues',xticklabels=year,yticklabels=region)#使用sns库中的heatmap()函数绘制热力图,annot=True表示在每个单元格中显示数值,cmap设置颜色映射plt.title('2000年—2021年部分地区总人口(万人)',fontsize=15)#设置图像标题,fontsize为设置字体大小plt.imshow(data)#显示二维RGB格式图像plt.tight_layout()#自动调整子图参数,使之填充整个图像区域plt.show()6.8绘制热力图代码执行结果如图6-11所示。第六章使用Matplotlib进行数据可视化分析图6-112015年—2018年医院各科室住院患者统计表内容导航CONTENTS绘制折线图Matplotlib基本概念及功能绘制散点图绘制柱状图6.16.2绘制饼状图绘制雷达图6.36.46.56.6绘制气泡图6.7绘制热力图6.8绘制词云图构建图矩阵6.106.11Matplotlib基本概念及功能6.1绘制三维曲线(面)6.96.9绘制三维曲线(面)第六章使用Matplotlib进行数据可视化分析三维曲线图,也称为三维曲面图,是一种以三个坐标轴来展示数据关系的图表类型。在三维空间中,每个点的坐标位置由三个变量的值决定,这些点可以连成曲线或构成曲面。三维曲线(面)图适用于展示三个变量之间的复杂关系,可以用来分析数据在三维空间中的分布、趋势和模式。通过观察曲线或曲面的形状和走向,人们可以揭示变量之间的相互作用和影响。然而,三维曲线(面)图在处理大量数据时可能会显得比较复杂,且对于用户的空间想象力要求较高。因此,在使用三维曲线(面)图时应谨慎考虑数据的复杂性和用户的空间想象。6.9绘制三维曲线(面)第六章使用Matplotlib进行数据可视化分析例6-12:使用Matplotlib库绘制三维曲线(面)图示例一。importmatplotlib.pyplotaspltimportnumpyasnpfrommpl_toolkits.mplot3dimportAxes3D#从Matplotlib库的mpl_toolkits模块中导入Axes3D类来创建三维图形x=np.arange(-10,10,0.1)#生成一维数组,表示x轴的坐标值,np.arange(-10,10,0.1)表示生成从-10开始,到10结束,步长为0.1的等差数列y=np.arange(-10,10,0.1)xx,yy=np.meshgrid(x,y)#meshgrid()函数用于将输入的一维坐标数组转换成二维的矩阵坐标zz=(xx**2+yy**2)#zz为xx和yy的平方和fig=plt.figure()#创建空白窗口ax=Axes3D(fig)#创建三维坐标轴ax.plot_surface(xx,yy,zz,cmap='rainbow')#ax.plot_surface()函数用于绘制三维曲线(面)图,xx、yy、zz为三维坐标,cmap参数可设置颜色映射为彩虹渐变色plt.show()注:cmap参数可用于设置多种颜色,如'viridis'(蓝绿渐变色)、'plasma'(黄紫渐变色)、'inferno'(黄黑渐变色)等。6.9绘制三维曲线(面)第六章使用Matplotlib进行数据可视化分析图6-12三维曲线(面)图示例一代码执行结果如图6-12所示。6.9绘制三维曲线(面)第六章使用Matplotlib进行数据可视化分析例6-12:使用Matplotlib库绘制三维曲线(面)图示例二。importmatplotlib.pyplotaspltimportnumpyasnpfrommpl_toolkits.mplot3dimportAxes3D#从Matplotlib库的mpl_toolkits模块中导入Axes3D类来创建三维图形frommatplotlibimportcm#导入Matplotlib库中的cm模块x=np.arange(-6,6,0.5)#生成一维数组,表示x轴的坐标值,np.arange(-6,6,0.5)表示生成从-6开始,到6结束,步长为0.5的等差数列y=np.arange(-6,6,0.5)x,y=np.meshgrid(x,y)#meshgrid()函数用于将输入的一维坐标数组转换成二维的矩阵坐标r=np.sqrt(x**2+y**2)#np.sqrt()为平方根函数,表示计算平面上点(x,y)到原点的距离rz=np.sin(r)#基于径向距离r计算z轴坐标值,生成正弦波曲面高度场fig=plt.figure()#创建空白窗口ax=Axes3D(fig)#创建三维坐标轴ax.plot_surface(x,y,z,cmap=cm.hot)#ax.plot_surface()函数用于绘制三维曲线(面)图,cmap=cm.hot为设置热力图颜色映射plt.show()6.9绘制三维曲线(面)第六章使用Matplotlib进行数据可视化分析图6-13三维曲线(面)图示例二代码执行结果如图6-13所示。内容导航CONTENTS绘制折线图Matplotlib基本概念及功能绘制散点图绘制柱状图6.16.2绘制饼状图绘制雷达图6.36.46.56.6绘制气泡图6.7绘制热力图6.8绘制三维曲线(面)构建图矩阵6.96.11Matplotlib基本概念及功能6.1绘制词云图6.106.10绘制词云图第六章使用Matplotlib进行数据可视化分析词云图(wordCloudgraph)是一种展示文本数据中单词或词语出现频率的图表类型。词云图将单词或词语的大小与其出现频率成比例地展示,使得用户可以迅速识别出文本中的主要话题和关键词。在词云图中,出现频率较高的单词或词语会以较大的字号显示,而出现频率较低的单词或词语则以较小的字号显示。这种图表不仅能够突出重要的内容,还能够提供文本的整体概览。词云图常用于社交媒体分析、搜索引擎优化、文本挖掘和文本可视化等领域,帮助人们快速发现文本中的高频单词或词语。然而,词云图可能无法展示出单词或词语之间的关联性,因此通常与其他文本分析工具结合使用,进行更全面的文本数据分析。6.10绘制词云图第六章使用Matplotlib进行数据可视化分析例6-14:请根据给定文件中药方剂.txt绘制词云图。#pipinstallwordcloud#安装wordcloud库绘制词云图#pipinstalljieba#安装jieba库进行中文分词fromwordcloudimportWordCloud#从wordcloud库中导入WordCloud类importmatplotlib.pyplotaspltimportjieba#导入jieba库withopen('中药处方剂.txt','r',encoding='UTF-8')asf:#使用“withopen()语句”打开中药处方.txt的文件,并以只读模式(’r’)和指定的编码格式(UTF-8)进行读取
text=f.read()#读取文件内容并将其存储在变量text中words=jieba.cut(text,cut_all=False)#使用jieba精确模式进行分词forchin',。’’?!;:、\n':#遍历文件中的特殊字符并删除,存在列表words中
ifchinwords:words=[wordforwordinwordsifword!=ch]6.10绘制词云图第六章使用Matplotlib进行数据可视化分析counts={}forwordinwords:iflen(word)>=2andwordnotin[‘和’,‘的’,‘是’]:#遍历文件中符合长度≥2,且不是‘和’‘的’‘是’条件的字符以键值对的方式存入字典counts中
counts[word]=counts.get(word,0)+1print(counts)#输出分词结果wc=WordCloud(font_path='simhei.ttf',background_color='white').generate_from_frequencies(counts)#根据词频结果绘制词云图,规定背景颜色为白色,字体为黑体plt.imshow(wc)#将数组数据以图像的形式显示plt.axis('off')#关闭图形坐标轴plt.show()注:在进行中文分词的时候需要将字体包和分词文件放在与Python文件同一路径下。6.10绘制词云图第六章使用Matplotlib进行数据可视化分析图6-14中药处方词云图代码执行结果如图6-14所示。内容导航CONTENTS绘制折线图Matplotlib基本概念及功能绘制散点图绘制柱状图6.16.2绘制饼状图绘制雷达图6.36.46.56.6绘制气泡图6.7绘制热力图6.8绘制三维曲线(面)绘制词云图6.96.10Matplotlib基本概念及功能6.1绘制图矩阵6.116.11构建图矩阵第六章使用Matplotlib进行数据可视化分析在使用Matplotlib绘图时,经常会遇到数据需要由多个图像来进行可视化展示的情况,此时需要在同一个窗口中展示多个子图,可以使用figure()函数创建画布,subplot()函数能够将当前图形窗口划分为多个子图,并选择其中一个作为当前绘图的轴。函数调用的基本格式为:plt.figure(num=None,figsize=None,dpi=None,facecolor=None)plt.subplot(nrows,ncols,index)figure()函数各部分表示含义如下:•num表示画布的编号,如果在此之前已经存在此编号的画布,则使用此编号画布作为当前画布,如果不存在此编号画布,则产生一个新画布,并把此新画布作为当前画布;•figsize定义画布的长宽,默认情况下长宽为(6.4,4.8);•dpi定义画布的分辨率,默认情况下分辨率为dpi=100;•facecolor定义画布的背景色。subplot()函数各部分表示含义如下:•nrows:表示子区域的行数;•ncols:表示子区域的列数;•index:表示子区域的编号,由左至右,由上至下从1开始编号。6.11构建图矩阵第六章使用Matplotlib进行数据可视化分析例6-15:使用Matplotlib库绘制图矩阵示例。代码如下:importmatplotlib.pyplotaspltimportnumpyasnpplt.figure(figsize=(6,3),facecolor='yellow')#产生背景为黄色画布,尺寸为(6,3)plt.subplot(2,3,1)#构建第一个子图plt.plot([1,2,3],[2,4,6])#绘制直线图plt.subplot(2,3,2)#构建第二个子图plt.plot([1,2,3],[2,8,6])#绘制折线图plt.subplot(2,3,3)#构建第三个子图X=[0,1,2,3,4,5]#创建数据Y=[22,82,455,664,454,134]plt.bar(X,Y,0.7,color='red')#绘制条形图,宽度为0.7,颜色为红色6.11构建图矩阵第六章使用Matplotlib进行数据可视化分析plt.subplot(2,3,4)#构建第四个子图x=[1,2,3,4,5,6,7,8,9,10]#创建数据y=[1,3,2,3,5,7,6,9,8,10]colors=np.random.rand(10)#生成一个包含10个随机数的数组sizes=np.random.randint(10,80,10)#生成一个包含10个随机整数的数组,范围为10-80之间plt.scatter(x,y,s=sizes,c=colors,alpha=0.5)#绘制气泡图,散点大小为sizes生成的数组,颜色为colors生成的数组,透明度为0.5plt.subplot(2,3,5)#构建第五个子图ex=(0.1,0,0)#设置每个扇形的偏移量plt.pie([30,30,40],labels=['A药','B药','C药'],autopct='%1.1f%%',explode=ex)#使用pie()函数绘制饼状图,[30,40,40]表示每个扇形面积,labels设置标签,autopct为设置每个扇区显示百分比格式的参数,explode表示每个扇形的偏移量plt.axis('equal')#使用axis函数设置坐标轴比例,当设置为'equal'时,表示x轴和y轴的刻度值之间的比例关系为1:1,避免图形变形。6.11构建图矩阵第六章使用Matplotlib进行数据可视化分析plt.subplot(2,3,6)#构建第六个子图x=np.linspace(0,10,1000)#linspace()函数返回1000个0-10均匀分布的样本y=np.sin(x)#计算正弦值plt.plot(x,y)#绘制正弦函数图像plt.tight_layout()#自动调整子图间距plt.show()6.11构建图矩阵第六章使用Matplotlib进行数据可视化分析图6-15图矩阵示例代码执行结果如图6-15所示。实训5数据可视化分析案例第六章使用Matplotlib进行数据可视化分析案例:表6-7为某课题组使用《SF-36生活质量调查表》对20名受试者进行评分,并收集了其他部分数据,编辑成Excel文件"SF-36生活质量调查表评分及其他部分数据.xlsx"。请根据以下数据绘制饼状图、散点图和雷达图,其中,饼状图和散点图放置于同一张图中。表6-7《SF-36生活质量调查表》评分及其他部分数据序号体质指数BMI分类身高(cm)生理功能生理职能躯体疼痛总体健康活力社会功能情感职能精神健康126.23超重16090100745780886772219.47正常160951005240506310052332.31肥胖15390100748775883376425.83超重16010050725070886776520.2正常16395100624035753352630.6肥胖158100501006575883384720.96正常155951008467751006780818.05偏瘦16295100847780753380931.45肥胖1731001008477808867761032.43肥胖15595100745060883368实训5数据可视化分析案例第六章使用Matplotlib进行数据可视化分析续表6-7序号体质指数BMI分类身高(cm)生理功能生理职能躯体疼痛总体健康活力社会功能情感职能精神健康1125.95超重160100507472658833881221.37正常162902572558010067881320.76正常15710010084678088100881420.2正常16095751007070100100761535.86肥胖160905010092801000801618.67正常1651001001007080100100801721.08正常153100100746560880761817.26偏瘦1581001008050808867841919.83正常1579510084876588100802021.09正常16410010010035757510080均值23.98—159.7596.258581.463.6570.7587.56076.8实训5数据可视化分析案例第六章使用Matplotlib进行数据可视化分析解题思路:1.计算偏瘦、正常、超重和肥胖四部分人数所占比重,得出结果分别为10%、50%、15%和25%,据此绘制饼状图;2.使用pipinstallopenpyxl语句安装openpyxl库,并导入load_workbook模块进行Excel文件的读取,获取Sheet1表中的身高数据并绘制散点图;3.根据Sheet2表《SF-36生活质量调查表评分均值》中的数据可绘制雷达图。代码如下:pipinstallopenpyxlimportmatplotlib.pyplotaspltfig,axs=plt.subplots(1,2,figsize=(6,3))#创建一个1行2列的子图布局,设置图形大小为6x3英寸#绘制饼状图plt.subplot(1,2,1)#选择第1个子图作为当前活动子图ex=(0.1,0,0,0)#设置每个扇形的偏移量实训5数据可视化分析案例第六章使用Matplotlib进行数据可视化分析plt.pie([10,50,15,25],labels=['偏瘦'
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能水表数据应用五年发展:用水成本与节水计划报告
- 2025年三峡大学马克思主义基本原理概论期末考试参考题库
- 高中校园广播系统在校园文化建设中的角色研究教学研究课题报告
- 2024年新乡学院马克思主义基本原理概论期末考试笔试真题汇编
- 2025年赣南医学院马克思主义基本原理概论期末考试笔试真题汇编
- 2025年西安职业技术学院马克思主义基本原理概论期末考试笔试题库
- 2025年山东省经济管理干部学院马克思主义基本原理概论期末考试参考题库
- 2025年闽南科技学院马克思主义基本原理概论期末考试真题汇编
- 2025年乌海职业技术学院马克思主义基本原理概论期末考试真题汇编
- 2025年山东体育学院马克思主义基本原理概论期末考试参考题库
- A-Level生物课件教学课件
- 充电桩电量销售合同范本
- 设备售后服务方案(3篇)
- 教师课程开发能力提升专题培训心得体会
- 电厂输煤卫生管理制度
- 2025年山西省中考英语试卷真题(含答案详解)
- TD/T 1036-2013土地复垦质量控制标准
- 《FPC材料介绍》课件
- 燃气行业工作危害分析(JHA+LEC)评价记录表
- 四川省遂宁市射洪县九年级2024-2025学年(上)期末化学试卷(含答案)
- 安全生产与员工情绪管理
评论
0/150
提交评论