MATPLOTLIB 教程:如何使用 Matplotlib 库在 python 中执行绘图和数据可视化_第1页
MATPLOTLIB 教程:如何使用 Matplotlib 库在 python 中执行绘图和数据可视化_第2页
MATPLOTLIB 教程:如何使用 Matplotlib 库在 python 中执行绘图和数据可视化_第3页
MATPLOTLIB 教程:如何使用 Matplotlib 库在 python 中执行绘图和数据可视化_第4页
MATPLOTLIB 教程:如何使用 Matplotlib 库在 python 中执行绘图和数据可视化_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

​本教程概述了如何使用Matplotlib库在python中执行绘图和数据可视化。这篇文章的目的是让您熟悉该库的基础知识和高级绘图功能。它包含几个示例,将为您提供使用Python生成绘图的实践经验。目录什么是Matplotlib?Matplotlib基础知识用于不同类型绘图的函数

条形图如何在栏顶部显示值或标签如何隐藏轴水平条形图如何对条形图进行排序或排序使用专业的图表主题/样式线形图在线图中添加标记以Pandas方式添加多条线如何改变x轴上的间隔?散点图饼形图自定义饼图直方图如何添加多个子图有用的提示什么是Matplotlib?它是一个强大的Python库,用于创建图形或图表。它可以满足您在Python中的所有基本和高级绘图要求。它的灵感来自于MATLAB编程语言,并提供类似MATLAB的图形界面。这个库的优点在于它与用于数据操作的pandas包很好地集成。通过结合这两个库,您可以轻松地执行数据整理和可视化,并从数据中获得有价值的见解。与R中的ggplot2库一样,matplotlib库是Python中图形的语法,也是Python中最常用的图表库。Matplotlib基础知识第一步您需要安装并加载matplotlib库。如果您使用Anaconda来设置Python环境,则必须已经安装它。安装库如果尚未安装matplotlib,可以使用以下命令安装pipinstallmatplotlib导入/加载库我们将导入Matplotlib的Pyplot模块并使用别名或缩写形式pltfrommatplotlibimportpyplotasplt图的元素标准图表的不同元素或部分如下图所示-​编辑数字您可以将该图视为由多个子图组成的大图。子图可以是图上的一个或多个。在图形世界中,它被称为“画布”。​编辑轴您可以将它们称为“子图”。轴这与您在学校或大学学习的内容(x轴或y轴)相同。标准图表显示轴上的标记。在matplotlib库中,它被调用ticks,并且刻度中的文本或值被称为ticklabels。基本情节x=[1,2,3,4,5]y=[5,7,3,8,4]plt.bar(x,y)plt.show()​编辑如果您使用的是JupyterNotebook,您可以提交

%matplotlibinline

一次此命令来显示或自动显示绘图,而无需plt.show()在每个绘图生成后输入。用于不同类型绘图的函数下表解释了不同的图形以及matplotlib库中为这些图形定义的函数。地块类型功能线图(默认)plt.plot()垂直条形图plt.bar()水平条形图plt.barh()直方图plt.hist()箱形图plt.box()面积图plt.area()散点图plt.scatter()饼图plt.pie()六边形箱图plt.hexbin()1.条形图条形图用于在不同类别或组之间进行比较。假设您想显示城市之间平均年收入的比较。让我们尝试一下基本的条形图。plt.title("简单条形图")#图表的名称标题plt.xlabel('Students')#指定x轴的名称plt.ylabel("MathScore")#指定y轴的名称plt.bar(x,y,color='red')#更改条形颜色plt.show()plt.title("SimpleBargraph")#Nametitleofthegraphplt.xlabel('Students')#Assignthenameofthexaxisplt.ylabel("MathScore")#Assignthenameoftheyaxisplt.bar(x,y,color='red')#Changebarcolorplt.show()​编辑您可以使用以下函数设置图表的样式-plt.title()用于指定绘图的标题。plt.xlabel()用于标记x轴。plt.ylabel()用于标记y轴。color=

plt.bar()中用于定义条形颜色的选项。如何在栏顶部显示值或标签在条形图上显示值并不容易和直接,因为matplotlib库中没有用于此任务的内置函数。因此,我们必须编写代码来完成此任务。条形图=plt.bar(x,y)对于条形图中的条形图:barplot=plt.bar(x,y)forbarinbarplot:yval=bar.get_height()plt.text(bar.get_x()+bar.get_width()/2.0,yval,int(yval),va='bottom')#va:verticalalignmentypositionalargumentplt.title("SimpleBargraph")plt.xlabel('Students')plt.ylabel("MathScore")

yval=bar.get_height()

plt.text(bar.get_x()+bar.get_width()/2.0,yval,int(yval),va='bottom')#va:垂直对齐y位置参数

plt.title("简单条形图")plt.xlabel('学生')plt.ylabel("数学成绩")​编辑这段代码是如何工作的?我们需要了解在每个栏顶部显示标签的逻辑。首先我们需要找出需要显示标签的位置。.get_height()返回每个条形的矩形高度,它基本上是y轴的值。为了找到x轴的值,我们可以使用get_x()andget_width()函数。

plt.text()用于在图表上放置文本。

plt.text()的语法plt.text(positionofxaxiswhereyouwanttoshowtext,positionofy-axis,text,other_options)plt.text(要显示文本的x轴位置、y轴位置、文本、other_options)我们使用int(yval)而不是yval,因为默认情况下,它以小数形式显示值。如何隐藏轴很多时候,我们隐藏y轴以赋予条形图美感。为了在matplotlib中做到这一点,我们可以利用plt.yticks()函数。[]表示空列表。plt.yticks([])​编辑如何在条形图中显示字符串值如果您使用的是matplotlib2.1及以上版本,

则操作起来很简单。!pipshowmatplotlib要检查python包的版本,您可以在JupyterNotebook中使用。如需升级,您可以提交代码!pipinstall--upgradematplotlibx=['A','B','C','D','E']y=[5,7,3,8,4]plt.bar(x,y)如果您使用的是matplotlib2.1之前的版本,matplotlib不会在条形图中的x轴上采用字符串值,因此我们需要找到解决方法来解决此问题。解决方案是将字符串值显示为标签,而range(len(x))将在x轴上显示1到5的值。plt.xticks可用于此任务。它遵循语法plt.xticks(locationofticks,labels,size='small')plt.bar(range(len(x)),y)plt.xticks(range(len(x)),x,size='small')plt.bar(范围(len(x)),y)plt.xticks(范围(len(x)),x,size='小')水平条形图如今,分析师更喜欢使用水平条形图而不是柱形条形图进行比较,因为它看起来更专业、更优雅。两种类型的图表都有相同的用途。plt.barh(x,y)用于生成水平条形图。plt.barh(x,y)plt.title("SimpleHorizontalBargraph")plt.xlabel("MathScore")plt.ylabel('Students')plt.barh(x,y)plt.title("简单水平条形图")plt.xlabel("数学成绩")plt.ylabel('学生')​编辑如何对条形图进行排序或排序要根据值而不是按字母顺序排列条形,我们需要组合两个列表,然后根据列表y的值对它们进行排序。zip()函数用于组合列表x和y的项目。sorted()根据y对它们进行排序。然后我们将其拆分并存储在x和y列表中。y,x=zip(*sorted(zip(y,x)))plt.barh(x,y)y,x=zip(*排序(zip(y,x)))plt.barh(x,y)​编辑反转条形顺序plt.subplot()用于找出当前轴,然后反转函数辅助反转顺序。plt.barh(x,y)ax=plt.subplot()ax.invert_yaxis()使用专业的图表主题/样式pyplot模块中有许多可用的主题。查看内置主题列表,您可以利用这些主题使您的图表更加优雅。print(plt.style.available)打印(plt.style.可用)['bmh','classic','dark_background','fivethirtyeight','ggplot','grayscale','seaborn-bright','seaborn-colorblind','seaborn-dark-palette','seaborn-dark','seaborn-darkgrid','seaborn-deep','seaborn-muted','seaborn-notebook','seaborn-paper','seaborn-pastel','seaborn-poster','seaborn-talk','seaborn-ticks','seaborn-white','seaborn-whitegrid','seaborn','_classic_test']我要使用fivethirtyeight主题。plt.style.use('Fivethirtyeight')​编辑线形图折线图用于显示某些项目随时间的价值。假设您需要显示过去5年公立学校学生的通过率。另一个例子——过去五年销售额发生了怎样的变化?让我们为其创建一个\o"pandas数据框。"pandas数据框。importpandasaspddf=pd.DataFrame({"Year":[2014,2015,2016,2017,2018],"Sales":[2000,3000,4000,3500,6000]})将pandas导入为pddf=pd.DataFrame({"年份":[2014,2015,2016,2017,2018],

“销售额”:[2000,3000,4000,3500,6000]})plt.plot()函数用于折线图。它是默认的图形类型。#plotlinechartplt.plot(df["Year"],df["Sales"])plt.title("SimpleLinePlot")plt.xlabel('Year')plt.ylabel('Sales')#绘制折线图plt.plot(df["年份"],df["销售额"])plt.title("简单线图")plt.xlabel('年份')plt.ylabel('销售')​编辑

Pandas可以通过直接从数据框中调用绘图来制作图表。可以通过在kind=选项中定义绘图类型来调用绘图。Pandas中的情节语法df.plot(x="Year",y="Sales",kind="line")df.plot(x="年份",y="销售额",kind="行")-'line'forlineplot(Default)-'bar'forverticalbarplots-'barh'forhorizontalbarplots-'hist'forhistogram-'pie'forpieplots-'box'forboxplot-'kde'fordensityplots-'area'forareaplots-'scatter'forscatterplots-'hexbin'forhexagonalbinplots-线图的“line”(默认)-垂直条形图的“bar”-'barh'用于水平条形图-直方图的“hist”-'pie'表示饼图-箱线图的“箱”-密度图的“kde”-面积图的“面积”-散点图的“scatter”-'hexbin'用于六边形箱图在线图中添加标记通过使用style=选项,您可以包含可自定义颜色和样式的标记。ax=df.plot(x="Year",y="Sales",kind="line",title="SimpleLinePlot",legend=False,style='r--')ax.set(ylabel='Sales',xlabel='Year',xticks=df["Year"])ax=df.plot(x="年份",y="销售额",kind="line",title="简单线图",legend=False,style='r--')ax.set(ylabel='销售额',xlabel='年份',xticks=df["年份"])​编辑您也可以使用这些样式ro,ro--,r+,rD-.。它们指的是圆圈、虚线、点划线。您可以提及任何颜色(“g”代表绿色,“b”代表蓝色,“k”代表黑色等).set方法用于添加x和y轴标签、限制和刻度。也可以像下面的代码一样写——ax.set_ylabel('Sales')ax.set_xlabel('Year')ax.set_xticks(df["Year"])ax.set_ylabel('销售')ax.set_xlabel('年份')ax.set_xticks(df["年份"])ax.set系列函数的语法与plt等效。造型功能。查看其中一些的比较-ax.set_ylabel()plt.ylabel()ax.set_xlabel()plt.xlabel()ax.set_xticks()plt.xticks()ax.set_ylabel()plt.ylabel()ax.set_xlabel()plt.xlabel()ax.set_xticks()plt.xticks()legend=False告诉pandas关闭图例以Pandas方式添加多条线在下面的代码中,我们创建一个pandasDataFrame,其中包含两种产品A和B的销售额以及时间段(年)。想法是比较产品的销量及其在过去5年的表现。importpandasaspdproduct=pd.DataFrame({"Year":[2014,2015,2016,2017,2018],"ProdASales":[2000,3000,4000,3500,6000],"ProdBSales":[3000,4000,3500,3500,5500]})#Multilineplotax=product.plot("Year","ProdASales",kind="line",label='ProductASales')product.plot("Year","ProdBSales",ax=ax,kind="line",label='ProductBSales',title='MultiLinePlot')#ax:axesobject#Setaxesax.set(ylabel='Sales',xlabel='Year',xticks=df["Year"])将pandas导入为pd产品=pd.DataFrame({"年份":[2014,2015,2016,2017,2018],

“产品销售”:[2000,3000,4000,3500,6000],

"ProdBSales":[3000,4000,3500,3500,5500]})#多线图ax=Product.plot("年份","ProdASales",kind="line",label='产品A销售')Product.plot("Year","ProdBSales",ax=ax,kind="line",label='产品B销售',title='多线图')#ax:轴对象#设置坐标轴ax.set(ylabel='销售额',xlabel='年份',xticks=df["年份"])​编辑ax=我们通过将其添加到作为轴对象的选项中来包含第二行。它就像同一个图形但有多个轴。如何改变x轴上的间隔?假设您想要显示从2014年到2018年的年份,并在x轴上按年份递增。如果值增加0.5而不是1,那么这是一个问题,您应该修复它。见下图-​编辑#Howtoshowyearswithsameintervalasitisdefinedincolumnax=df.plot(x="Year",y="Sales",kind="line",title="SimpleLinePlot",legend=False)ax.set(ylabel='Sales',xlabel='Year',xticks=df["Year"])#如何显示与列中定义的间隔相同的年份ax=df.plot(x="年份",y="销售额",kind="line",title="简单线图",legend=False)ax.set(ylabel='销售额',xlabel='年份',xticks=df["年份"]

)xticks=可用于更改x轴间隔的比例。它将显示您想要在x轴上显示的内容的刻度。散点图散点图主要用于显示两个连续变量之间的关系。例如,您想要测量身高和体重之间的关系。与折线图一样,它也可用于显示随时间变化的趋势。我们通常在x轴和y轴上绘制一组点。kind='scatter'用于创建散点图。ax=product.plot("Year","ProdASales",kind='scatter',color='red',title='YearbyProductASales')ax.set(ylabel='ProductASales',xlabel='Year',xticks=df["Year"])plt.show()ax=Product.plot("年份","ProdASales",kind='scatter',color='red',title='ProductA销售年份')ax.set(ylabel='产品A销售',xlabel='年份',xticks=df["年份"])plt.show()​编辑饼形图饼图是一种圆形图,它将数据分成多个切片以显示每个类别的数字比例。如果您显示百分比,则所有百分比之和应为100%。​编辑share=[20,12,11,4,3]companies=['Google','Facebook','Apple','Microsoft','IBM',]comp=pd.DataFrame({"share":share,"companies":companies})ax=comp.plot(y="share",kind="pie",labels=comp["companies"],autopct='%1.0f%%',legend=False,title='MarketShare')#Hidey-axislabelax.set(ylabel='')份额=[20,12,11,4,3]公司=['谷歌','Facebook','苹果','微软','IBM',]comp=pd.DataFrame({"share":共享,"companies":公司})ax=comp.plot(y="share",kind="pie",labels=comp["companies"],autopct='%1.0f%%',legend=False,title='市场份额')#隐藏y轴标签ax.set(ylabel='')自定义饼图默认startangle为0。通过设置startangle=90,所有内容都将逆时针旋转90度。通过使用explode=选项,您可以爆炸特定类别。在下面的程序中,我们将展开前三个类别。#CustomizePieChartax=comp.plot(y="share",kind="pie",labels=comp["companies"],startangle=90,shadow=True,explode=(0.1,0.1,0.1,0,0),autopct='%1.0f%%',legend=False,title='MarketShare')ax.set(ylabel='')plt.show()#自定义饼图ax=comp.plot(y="share",kind="pie",labels=comp["companies"],startangle=90,Shadow=True,

explode=(0.1,0.1,0.1,0,0),autopct='%1.0f%%',legend=False,title='市场份额')ax.set(ylabel='')plt.show()直方图直方图用于显示连续变量的频率分布。假设您想查看学生的分数分布。​编辑#CustomizePieChartax=comp.plot(y="share",kind="pie",labels=comp["companies"],startangle=90,shadow=True,explode=(0.1,0.1,0.1,0,0),autopct='%1.0f%%',legend=False,title='MarketShare')ax.set(ylabel='')plt.show()#创建随机数据将numpy导入为npnp.随机.种子(1)mydf=pd.DataFrame({"年龄":np.random.randint(low=20,high=100,size=50)})#直方图ax=mydf.plot(bins=5,kind="hist",rwidth=0.7,title='分布-标记',legend=False)ax.set(xlabel="Bins")plt.show()bins表示要在x轴上显示的间隔数。rwidth显示条形的相对宽度,作为bin宽度的一部分。如何添加多个子图通过使用matplotlib库,我们可以在同一个图形或图形中生成多个子图。Matplotlib提供了两个接口来完成此任务-plt.subplots()和plt.figure()。这两种方式的逻辑都是相似的-我们将有一个图形,我们将在图形上一一添加多个轴(子图)。我创建了一个虚拟DataFrame来进行说明。在此示例中,我们有2017年和2018年生活成本分数(假数据!)的城市数据。labels=['Delhi','Mumbai','Bangalore','Chennai']x1=[45,30,15,10]x2=[25,20,25,50]finaldf=pd.DataFrame({"2017_Score":x1,"2018_Score":x2,"cities":labels})标签=['德里'、'孟买'、'班加罗尔'、'钦奈']x1=[45,30,15,10]x2=[25,20,25,50]Finaldf=pd.DataFrame({"2017_Score":x1,"2018_Score":x2,"城市":标签}).add_subplot()or.subplots()遵循语法规则-.add_subplot(121)means1row,2columnsand1stplot.add_subplot(122)means1row,2columnsand2ndplotSimilarly,.subplots(1,2)means1rowand2columns子图(行数、列数、图号).add_subplot(121)表示1行、2列和第一个图

.add_subplot(122)表示1行、2列和第二个图

同样,.subplots(1,2)表示1行和2列以下两种方法返回相同的结果。它生成两个子图并将它们彼此相邻(水平)放置。方法一fig=plt.figure()ax1=fig.add_subplot(121)ax=finaldf.plot(x="cities",y="2017_Score",ax=ax1,kind="barh",legend=False,title="2017Score")ax.invert_yaxis()ax2=fig.add_subplot(122)ax=finaldf.plot(x="cities",y="2018_Score",ax=ax2,kind="barh",legend=False,title="2018Score")ax.invert_yaxis()ax.set(ylabel='')方法二fig,(ax0,ax01)=plt.subplots(1,2)ax=finaldf.plot(x="cities",y="2017_Score",ax=ax0,kind="barh",legend=False,title="2017Score")ax.invert_yaxis()ax=finaldf.plot(x="cities",y="2018_Score",ax=ax01,kind="barh",legend=False,title="2018Score")ax.invert_yaxis()ax.set(ylabel='')​编辑详细说明这3行代码返回空白(空)2个子图。121指的是左手侧图并且122指的是右手侧图。通过使用ax=

object,我们可以使用轴并控制子图的定位。fig=plt.figure()fig.add_subplot(121)fig.add_subplot(122)如何垂直显示子图fig=plt.figure()ax1=fig.add_subplot(211)ax=finaldf.plot(x="cities",y="2017_Score",ax=ax1,kind="barh",legend=False,title="2017vs2018Score")ax.invert_ya

温馨提示

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

评论

0/150

提交评论