版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模块13数据可视化113.1matplotlib库13.1.1matplotlib概述matplotlib作为Python的一个基本绘图库,是Python中应用最广泛的绘图工具包之一。可以绘制多种形式的图形,包括折线图、散点图、直方图、条形图、箱形图、饼图等。matplotlib包括pyplot、pylab等绘图模块以及大量用于字体、颜色、图例等图形元素的管理与控制的模块。使用pyplot或pylab绘图的一般过程为:首先读入数据,然后根据需要绘制折线图、散点图、直方图、条形图、箱形图或饼图等图形,接下来设置轴、标题和图形的属性,最后显示或者保存绘制的图形。在matplotlib中提供了丰富的函数用于各类图形的绘制。这些函数都具有很多可选参数用于支持个性化设置,其中的很多参数又具有多个可能的值,例如颜色、线型、字体、字号等。通过使用这些函数,我们可以用非常简洁的代码绘制出各种优美的图形。213.1matplotlib库13.1.2matplotlib安装在安装完python后,我们可以使用pip命令来安装matplotlib模块。具体步骤如下:(1)按下Win+R,在“运行”窗口输入“cmd”,单击“确定”进入到cmd窗口下,执行python-mpipinstall-Upipsetuptools进行升级。(2)输入python-mpipinstallmatplotlib进行matplotlib模块的安装,系统会自动下载安装包并进行安装。(3)安装完成后,可以用python-mpiplist查看本机的安装的所有模块,确保matplotlib已经安装成功。313.2绘制统计图形13.2.1折线图在Python数据可视化图表的所有类型中,折线图最为简单。当你想清楚地看到一个变量随另一个变量的变化而发生的变化时,可以使用折线图。折线图的各个数据点由一条直线来连接,一对对(x,y)值组成的数据点在图表中的位置取决于两条轴(x和y)的刻度范围。Python中用来绘制折线图的函数是plot()函数。plot()函数语法如下:plot(x,y,linestyle,linewidth,color,marker,markersize,markeredgecolor,markerfactcolor,markeredgewidth,label,alpha)413.2绘制统计图形plot()函数各参数的含义如下:x:指定折线图的x轴数据。y:指定折线图的y轴数据。linestyle:指定折线的类型,可以是实线、虚线、点虚线、点点线等,默认为实线。linewidth:指定折线的宽度。marker:可以为折线图添加点,该参数是设置点的形状。markersize:设置点的大小。markeredgecolor:设置点的边框色。markerfactcolor:设置点的填充色。markeredgewidth:设置点的边框宽度。label:为折线图添加标签,类似于图例的作用。alpha:设置透明度,越接近0越透明,越接近1越不透明。513.2绘制统计图形
例13-1某高校计算机系近5年的招生人数见表13-1,针对该表绘制折线图。表13-1计算机系近5年的招生人数基本思路:我们先导入模块pyplot,然后使用该模块的plot函数来绘制折线图,接着调用该模块的相关函数来调整、设置图表的标题、横纵标签、刻度标记内容和大小。6年份20152016201720182019人数38041039641543013.2绘制统计图形importmatplotlib.pyplotasplt#导pyplot模块x=[2015,2016,2017,2018,2019]#X坐标轴显示年份y=[380,410,396,415,430]#Y坐标轴显示人数
plt.plot(x,y,color='red')
#用plot函数绘制折线图#指定图形标题,并设置标题字体字号
plt.title("2015-2019年计算机系招生人数",fontproperties='STKAITI',fontsize=24)#指定X坐标轴的标签,并设置标签字体字号
plt.xlabel("年份",fontproperties='STKAITI',fontsize=20)#指定Y坐标轴的标签,并设置标签字体字号plt.ylabel("招生人数",fontproperties='STKAITI',fontsize=20)
#参数axis值为both,代表要设置横纵坐标的刻度标记,标记大小为14plt.tick_params(axis='both',labelsize=14)plt.show()#打开matplotlib查看器,并显示绘制的图形713.2绘制统计图形代码运行结果如图13-4所示。图13-4折线图813.2绘制统计图形13.2.2散点图散点图用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。散点图将序列显示为一组点,值由点在图表中的位置表示,类别由图表中的不同标记表示。散点图通常用于比较跨类别的聚合数据。Python中用来绘制散点图的函数是scatter()函数。scatter()函数语法如下:scatter(x,y,s=20,c=None,marker='o',cmap=None,norm=None,vmin=None,vmax=None,alpha=None,linewidths=None,edgecolors=None)913.2绘制统计图形scatter()函数各参数的含义如下:x:指定散点图的x轴数据。y:指定散点图的y轴数据。s:指定散点图点的大小,默认为20,通过传入其他数值型变量,可以实现气泡图的绘制。c:指定散点图点的颜色,默认为蓝色,也可以传递其他数值型变量,通过cmap参数的色阶表示数值大小marker:指定散点图点的形状,默认为空心圆。cmap:指定某个Colormap值,只有当c参数是一个浮点型数组时才有效。norm:设置数据亮度,标准化到0~1,使用该参数仍需要参数c为浮点型的数组。vmin、vmax:亮度设置,与norm类似,如果使用norm参数,则该参数无效。alpha:设置散点的透明度。linewidths:设置散点边界线的宽度。edgecolors:设置散点边界线的颜色。1013.2绘制统计图形例13-2绘制由200个随机点组成的散点图,要求随机点的横纵坐标值均在0-1之间。importmatplotlib.pylabaspltimportnumpyasnpk=200#随机点数量为200个x=np.random.rand(k)#生成200个0-1之间的随机小数y=np.random.rand(k)size=np.random.rand(k)*50#生成每个点的大小colour=np.arctan2(x,y)#生成每个点的颜色plt.scatter(x,y,s=size,c=colour)#绘制散点图plt.show()1113.2绘制统计图形代码运行结果如图13-5所示。图13-5散点图1213.2绘制统计图形13.2.3直方图直方图描述了数据中某个范围内数据出现的频度。Python中用来绘制直方图的函数是hist()函数,hist()函数语法如下:hist(x,bins=10,range=None,normed=False,weights=None,cumulative=False,bottom=None,histtype='bar',align='mid',orientation='vertical',rwidth=None,log=False,color=None,edgecolor=None,label=None,stacked=False)1313.2绘制统计图形hist()函数各参数的含义如下:x:指定要绘制直方图的数据。bins:指定直方图条形的个数。range:指定直方图数据的上下界,默认包含绘图数据的最大值和最小值。normed:是否将直方图的频数转换成频率。weights:该参数可为每一个数据点设置权重。cumulative:是否需要计算累计频数或频率。bottom:可以为直方图的每个条形添加基准线,默认为0。histtype:指定直方图的类型,默认为bar,除此还有’barstacked’,‘step’,‘stepfilled’。1413.2绘制统计图形align:设置条形边界值的对其方式,默认为mid,除此还有’left’和’right’。orientation:设置直方图的摆放方向,默认为垂直方向。rwidth:设置直方图条形宽度的百分比。log:是否需要对绘图数据进行log变换。color:设置直方图的填充色。edgecolor:设置直方图的边框色。label:设置直方图的标签,可通过legend展示其图例。stacked:当有多个数据时,是否需要将直方图呈堆叠摆放,默认水平摆放。1513.2绘制统计图形例13-3生成1000个0-100之间的随机整数,用直方图展示这1000个随机数的分布情况。importmatplotlib.pylabasplt
importnumpyasnp
pop=np.random.randint(0,100,1000)#生成随机数
plt.hist(pop,bins=20,color='steelblue',edgecolor='k')#绘制直方图
plt.title('1000个0-100之间的随机数分布直方图',fontproperties='STKAITI',fontsize=20)#设置直方图标题
plt.xlabel('随机数值',fontproperties='STKAITI',fontsize=18)#设置x轴标签
plt.ylabel('随机数个数',fontproperties='STKAITI',fontsize=18)#设置y轴标签
plt.show()1613.2绘制统计图形代码运行结果如图13-6所示。图13-6直方图1713.2绘制统计图形13.2.4条形图条形图是统计图资料分析中最常用的图形,条形图常常用来描述一组数据的对比情况。条形图能够使人们一眼看出各个项目数据的大小,使人们容易比较各个不同项目数据之间的差别。条形图与直方图的区别:(1)条形图是用条形的长度表示各类别频数的多少,其宽度(表示类别)则是固定的;直方图是用面积表示各组频数的多少,矩形的高度表示每一组的频数或频率,宽度则表示各组的组距,因此其高度与宽度均有意义。(2)由于分组数据具有连续性,直方图的各矩形通常是连续排列,而条形图则是分开排列。(3)条形图主要用于展示分类数据,而直方图则主要用于展示数据型数据。1813.2绘制统计图形Python中用来绘制条形图的函数是bar()函数。bar()函数语法如下:bar(left,height,width=0.8,bottom=None,color=None,edgecolor=None,linewidth=None,tick_label=None,xerr=None,yerr=None,label=None,ecolor=None,align,log=False,**kwargs)bar()函数各参数的含义如下:x:传递数值序列,指定条形图中x轴上的刻度值。height:传递数值序列,指定条形图y轴上的高度。width:指定条形图的宽度,默认为0.8。bottom:用于绘制堆叠条形图。color:指定条形图的填充色。1913.2绘制统计图形edgecolor:指定条形图的边框色。linewidth:指定条形图边框的宽度,如果指定为0,表示不绘制边框。tick_label:指定条形图的刻度标签。xerr:如果参数不为None,表示在条形图的基础上添加误差棒。yerr:参数含义同xerr。label:指定条形图的标签,一般用以添加图例。ecolor:指定条形图误差棒的颜色align:指定x轴刻度标签的对齐方式,默认为center,表示刻度标签居中对齐,如果设置为edge,则表示在每个条形的左下角呈现刻度标签。log:bool类型参数,是否对坐标轴进行log变换,默认为False。**kwargs:关键字参数,用于对条形图进行其他设置,如透明度等。2013.2绘制统计图形例13-4某商场2019年四个季度手机的销售数量统计如表13-2所示,针对该表绘制条形图。表13-2某商场2019年四个季度手机销售统计表21季度一季度二季度三季度四季度销售数量(台)232520171533192513.2绘制统计图形importmatplotlib.pylabasplt
plt.rcParams['font.sans-serif']=['SimHei']#用于正常显示中文标签
s=['一季度','二季度','三季度','四季度']
v=[2325,2017,1533,1925]
plt.bar(x=list(range(4)),#指定条形图x轴的刻度值
height=v,#指定条形图y轴的数值
tick_label=s,#指定条形图x轴的刻度标签color='steelblue',
#指定条形图的填充色
width=0.8)
#指定条形图的宽度
plt.ylabel('销售数量(台)')#添加y轴的标签
plt.title('2019年四个季度手机销售数量')#添加条形图的标题
forx,yinenumerate(v):#为每个条形图添加数值标签
plt.text(x,y,y,ha='center')
plt.show()2213.2绘制统计图形代码运行结果如图13-7所示。图13-7条形图2313.2绘制统计图形13.2.5箱形图箱形图也称箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名,在各种领域也经常被使用。它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。箱形图利用数据中的五个统计量(最小值、下四分位数、中位数、上四分位数、最大值)来描述数据,可粗略看出数据是否具有对称性、分布的分散程度等信息。Python中用来绘制箱形图的函数是boxplot()函数。boxplot()函数语法如下:boxplot(x,notch=None,sym=None,vert=None,whis=None,positions=None,widths=None,patch_artist=None,meanline=None,showmeans=None,showcaps=None,showbox=None,showfliers=None,boxprops=None,labels=None,flierprops=None,medianprops=None,meanprops=None,capprops=None,whiskerprops=None)2413.2绘制统计图形boxplot()函数各参数的含义如下:x:指定要绘制箱线图的数据。notch:是否以凹口的形式展现箱线图,默认非凹口。sym:指定异常点的形状,默认为+号显示。vert:是否需要将箱线图垂直摆放,默认垂直摆放。whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差。positions:指定箱线图的位置,默认为[0,1,2…]。widths:指定箱线图的宽度,默认为0.5。patch_artist:bool类型参数,是否填充箱体的颜色;默认为False。meanline:bool类型参数,是否用线的形式表示均值,默认为False。showmeans:bool类型参数,是否显示均值,默认为False。2513.2绘制统计图形showcaps:bool类型参数,是否显示箱线图顶端和末端的两条线(即上下须),默认为True。showbox:bool类型参数,是否显示箱线图的箱体,默认为True。showfliers:是否显示异常值,默认为True。boxprops:设置箱体的属性,如边框色,填充色等。labels:为箱线图添加标签,类似于图例的作用。filerprops:设置异常值的属性,如异常点的形状、大小、填充色等。medianprops:设置中位数的属性,如线的类型、粗细等。meanprops:设置均值的属性,如点的大小、颜色等。capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等。whiskerprops:设置须的属性,如颜色、粗细、线的类型等。2613.2绘制统计图形例13-5
3月份济南各小区二手房单价如表13-3所示,依据表中房屋单价绘制箱形图。表13-33月份济南各小区二手房单价27小区单价小区单价领秀城20000常春藤12000泉景天沅25000西苑9000中海国际18000中央花园14500舜玉小区17500新世界19500燕子山小区26000雅苑15000万科城22500金科城1200013.2绘制统计图形importmatplotlib.pyplotasplt
plt.rcParams['font.sans-serif']=['SimHei']
#绘制箱线图
plt.boxplot(x=[20000,25000,18000,17500,26000,22500,12000,9000,14500,19500,15000,12000],#指定绘图数据
patch_artist=True,#要求用自定义颜色填充盒形图,默认白色填充
showmeans=True,#以点的形式显示均值#设置箱体属性,如边框色和填充色
boxprops={'color':'black','facecolor':'steelblue'},
2813.2绘制统计图形#设置异常点属性,如点的形状、填充色和点的大小
flierprops={'marker':'o','markerfacecolor':'red','markersize':3},
#设置均值点的属性,如点的形状、填充色和点的大小
meanprops={'marker':'D','markerfacecolor':'indianred','markersize':4},#设置中位数线的属性,如线的类型和颜色
medianprops={'linestyle':'--','color':'orange'},
labels=[''])#删除x轴的刻度标签,否则图形显示刻度标签为1
plt.title('二手房单价分布的箱线图')#添加图形标题
plt.show()#显示图形2913.2绘制统计图形代码运行结果如图13-8所示。图13-8箱形图3013.2绘制统计图形13.2.6饼图除了条形图,饼图也可以用来描述一组数据的对比情况。饼图展示的是集合中各个部分的百分比。饼图适合展示各部分占总体的比例,而条形图适合比较各部分的大小。Python中用来绘制饼图的函数是pie()函数。pie()函数语法如下:pie(x,explode=None,labels=None,colors=None,autopct=None,pctdistance=0.6,shadow=False,labeldistance=1.1,startangle=None,radius=None,counterclock=True,wedgeprops=None,textprops=None,center=(0,0),frame=False)3113.2绘制统计图形pie()函数各参数的含义如下:x:指定绘图的数据。explode:指定饼图某些部分的突出显示,即呈现爆炸式。labels:为饼图添加标签说明,类似于图例说明。colors:指定饼图的填充色。autopct:自动添加百分比显示,可以采用格式化的方法显示。pctdistance:设置百分比标签与圆心的距离。shadow:是否添加饼图的阴影效果。labeldistance:设置各扇形标签(图例)与圆心的距离。3213.2绘制统计图形startangle:设置饼图的初始摆放角度。radius:设置饼图的半径大小。counterclock:是否让饼图按逆时针顺序呈现。wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等。textprops:设置饼图中文本的属性,如字体大小、颜色等。center:指定饼图的中心点位置,默认为原点。frame:是否要显示饼图背后的图框,如果设置为True的话,需要同时控制图框x轴、y轴的范围和饼图的中心位置。3313.2绘制统计图形位次编程语言市场占有率1Java16.73%2C16.72%3Python9.31%4C++6.78%5C#4.74%6VisualBasic4.72%7JavaScrpt2.38%8PHP2.37%9SQL2.17%……Others34.08%34例13-62020年4月的TIOBE编程语言排行榜如表13-4所示,绘制饼图展示各编程语言的市场占有率。表13-42020年4月TIOBE编程语言排行榜13.2绘制统计图形importmatplotlib.pylabasplt
importnumpyasnp
data=np.array([0.1673,0.1672,0.0931,0.0678,0.0474,0.0472,0.0238,0.0237,0.0217,0.3408])colors=['red','pink','yellow','green','orange']labels=['Java','C','Python','C++','C#','VisualBasic','JavaScript','PHP','SQL','Others']
plt.pie(x=data,#设置饼图数据labels=labels,#设置饼图各部分标签3513.2绘制统计图形autopct="%1.2f%%",#设置百分比格式,保留2位小数colors=colors,#设置自定义填充色textprops={'fontsize':14,'color':'black'})#设置文本标签的属性值
plt.axis('equal')
plt.legend()#添加图例plt.title('2020年4月TIOBE编程语言排行榜',fontproperties='STKAITI',fontsize=26)#添加标题
plt.show()3613.2绘制统计图形代码运行结果如图13-9所示。图13-9饼图3713.3综合案例
现有一张某销售部门的员工信息统计表如图13-10所示,该表存储位置为“d:\employ.xlsx”,针对该表分别绘制折线图、散点图、直方图、条形图、箱形图和饼图。图13-10员工信息统计表3813.3综合案例1.绘制折线图,用于统计各员工的销售数量。importmatplotlib.pylotasplt
importpandasaspd
plt.rcParams['font.sans-serif']=['SimHei']
df=pd.read_excel("d:\\employ.xlsx","Sheet1")
plt.plot(df['工号'],df['销售数量'],color='green')
plt.title("员工销售数量折线图",fontsize=22)
plt.xlabel("工号",fontsize=18)
plt.ylabel("销售数量",fontsize=18)
plt.tick_params(axis='both',labelsize=14)
plt.show()3913.3综合案例40运行结果如图13-11所示。图13-11折线图13.3综合案例2.绘制散点图,用于统计不同年龄员工的月收入。importmatplotlib.pylotasplt
importpandasaspd
plt.rcParams['font.sans-serif']=['SimHei']
df=pd.read_excel("d:\\employ.xlsx","Sheet1")
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.scatter(df['年龄'],df['月收入'])
plt.title("员工收入散点图",fontsize=22)
plt.xlabel("年龄",fontsize=18)
plt.ylabel("月收入",fontsize=18)
plt.show()4113.3综合案例42运行结果如图13-12所示。图13-12散点图13.3综合案例3.绘制直方图,用于统计各年龄段员工的人数。importmatplotlib.pylotasplt
importpandasaspd
plt.rcParams['font.sans-serif']=['SimHei']df=pd.read_excel("d:\\employ.xlsx","Sheet1")
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.hist(df['年龄'],bins=7,color='steelblue',edgecolor='k')
plt.title('各年龄段人数统计',fontsize=22)
plt.xlabel('年龄',fontsize=18)
plt.ylab
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卫生洁具公司管理办法
- 湖南大学(朱利鹏):2025年面向电力系统暂态电压稳定性提升的深度反馈学习报告(英文版)
- 2026年高职(港口航道与海岸工程)阶段测试试题及答案
- 高中语文必修上册第四单元整体教学设计
- 2026年临床执业医生考试试题及答案
- 武梁祠汉画像石《鲁义姑姊》:故事叙述与图像表现的汉代镜像
- 正念训练对大学生注意觉知与情绪调节自我效能感的影响:基于实证的探究
- 正倒向随机微分方程的蒙特卡洛算法:理论、应用与前沿探索
- 全国高等教育机械工程专业课程试题
- 主题7 人物风采People Around Us- 2026年初中英语中考主题作文满分训练
- NB/T 11108-2023选煤用起泡剂性能要求
- 妇产科-滋养细胞疾病-课件
- 子女抚养权协议书
- 情志养生的方法
- 2022年全国青少年人工智能创新挑战赛考试题库(含答案)
- (完整)抗菌药物培训试题库及答案
- 葫芦岛连石化工有限责任公司年产3.5万吨苯二胺项目环评报告
- 部编人教版二年级语文下册《寓言二则》精美课件
- GB/T 470-2008锌锭
- 医疗质量与医疗安全管理-医疗风险防范与纠纷处理课件
- 初中 初一 劳动教育活动《维护保养自行车》第一课时 PPT 课件
评论
0/150
提交评论