900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 数据分析学习笔记—matplotlib折线图 条形图 直方图 饼状图基础绘制

数据分析学习笔记—matplotlib折线图 条形图 直方图 饼状图基础绘制

时间:2018-08-03 13:25:53

相关推荐

数据分析学习笔记—matplotlib折线图 条形图 直方图 饼状图基础绘制

文章目录

一、Matplotlib概念和基本属性设置思维导图二、折线图基础绘制及代码中相关参数解析1、代码2、结果展示3、Matplotlib图组件—官方4、jupyter Notebook获取函数及其参数使用方法5、代码函数和类常用参数详解(1)`plt.figure()` 参数(2)`font_manager.FontProperties()`参数(3)`plt.plot()`参数(4)`plt.legend()`参数(5)`plt.grid()`参数三、条形图基础绘制1、简单条形图(1)导入模块(2)设置条形图的属性(3)绘制条形图(4)结果展示2、横向条形图3、并列条形图4、堆叠条形图四、直方图基础绘制1、直方图概念2、直方图绘制(1)导入模块(2)准备数据(3)创建画布,设置相关属性(4)直方图绘制五、饼图基础绘制

一、Matplotlib概念和基本属性设置思维导图

二、折线图基础绘制及代码中相关参数解析

1、代码

from matplotlib import pyplot as pltfrom matplotlib import font_manager#设置x,y的值x1=[-7,-4,-1,0,3,5,7,9,12,15,16,17]y1=[12,13,15,17,23,11,13,26,99,10,12,36]y2=[-12,73,-15,7,13,33,12,36,9,11,1,7]#设置实例fig的大小和像素fig = plt.figure(figsize=(30,10),dpi=300)#导入windows的字体font = font_manager.FontProperties(fname='C:/Windows/Fonts/msyh.ttc',size=20)#设置图的图例名字,折线的颜色,透明度,折线宽度,和折点的形状,折点的大小,折点的颜色,折点边缘的颜色,这里形状为*plt.plot(x1,y1,label='图例1',color='orange',alpha=1,linewidth=3,marker='*',markersize=30,markerfacecolor='red',markeredgecolor='purple',markeredgewidth=5)plt.plot(x1,y2,label='图例2',color='green',alpha=1,linewidth=3,marker='o',markersize=20,markerfacecolor='purple',markeredgecolor='red',markeredgewidth=5)#设置图例的显示,显示为中文plt.legend(prop=font,loc='upper right')#设置图的网格,x隐藏,只显示竖直方向的网格线,以及网格线的样式,透明度和宽度plt.grid(axis='x',color='red',alpha=0.5,linestyle='--',linewidth=1)#设置x轴左边最大是-2,隐藏右边和上方的坐标轴,将左边和下方坐标轴0点重合形成新坐标轴plt.xlim(left=-2)ax = plt.gca()ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')ax.spines['bottom'].set_color('blue')ax.spines['left'].set_color('blue')ax.spines['bottom'].set_position(('data',0))ax.spines['left'].set_position(('data',0))#设置x轴和y轴的刻度,显示中文,旋转30度x=[-8,-6,-4,-2,0,2,4,6,8,10,12,14,16,18]y=[0,10,20,30,40,50,60,70,80,90,100]x_ticks_label = ["{}度".format(i) for i in x]plt.xticks(x,x_ticks_label,fontproperties=font)y_ticks_label = ["{}个".format(i) for i in y]plt.yticks(y,y_ticks_label,fontproperties=font)#设置x轴标签plt.xlabel('温度',fontproperties=font)#显示图例1对应折线折点的x和y的值,坐标注释的位置,字体线型和字体颜色和外框显示for a,b in zip(x1,y1):plt.annotate('(%s,%s)'%(a,b),xy=(a,b),xytext=(10,10),textcoords='offset points',weight='heavy',color='#0926f1', bbox=dict(boxstyle='round,pad=0.5', fc='yellow', ec='k', lw=1, alpha=0.5))#显示图例2对应折线折点的坐标,垂直对齐方式,水平对齐方式,字体大小,字体背景颜色,旋转角度,透明度for a,b in zip(x1,y2):plt.text(a,b,(a,b),ha='left',va='top',fontsize=12,color='#0926f1',backgroundcolor='yellow',rotation=3,alpha=0.5)#保存生成的图片plt.savefig('D:/tools/Git/data-analysis-learning-route/数据分析基础/python/python基础语法/示例.png')plt.show()

2、结果展示

3、Matplotlib图组件—官方

4、jupyter Notebook获取函数及其参数使用方法

举例:获取abs函数和参数用法,输入后,点击运行,或者在光标位置按Shift+Tab

abs?

5、代码函数和类常用参数详解

(1)plt.figure()参数

plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)

num:数字或者字符串,数字作为id,如果id预先不存在,则新增figure,按顺序递增编号,如果id存在,则返回对该图像的引用。字符串则是窗口标题figsize:英寸单位,(宽,高)dpi:设置图像分辨率facecolor:背景颜色edgecolor:边框颜色frameon:是否显示边框

(2)font_manager.FontProperties()参数

font_manager.FontProperties(family=None,style=None,variant=None,weight=None,stretch=None,size=None,fname=None)

family:字体类别,默认值为sans-serif(无衬线体),其他的有serif(衬线体),cursive(手写体),fantasy(符号字体),monospace(等宽字体)style:字体的样式,默认为normal(正常),其他的有italic(斜体),oblique(文本倾斜)variant:默认为normal,其他的为small-caps(小型大写字体)weight:字体的粗细,采用0-1000的数值表示,也可用另一种表示,默认为normal,其他的为ultralight(超细),light(细),regular(常规),bookmedium(中等),roman(罗马字体),semibolddemibolddemiboldheavyextra bold(超粗),black(黑色)stretch: 字体的拉伸,采用0-1000的数值表示,也可用另一种表示,ultra-condensedextra-condensedcondensedsemi-condensednormalsemi-expandedexpandedextra-expandedultra-expandedsize:字体大小,默认为10,使用数字,或者xx-smallx-smallsmallmediumlargex-largexx-largefname:通过字体文件的绝对路径指定特定的字体,一般是windows自带字体

(3)plt.plot()参数

plt.plot(*args, scalex=True, scaley=True, data=None, **kwargs)

对于使用的人,比如我这个菜鸟,可能这个就太抽象了,即便后面他补充说明了几种参数,但我的使用主要还是集中在2D的一些我个人目前常用的绘图的属性设置,写到这里我学会了用word做表格更清晰明了

x,y:x是可选的,如果没写,则默认情况下是按照y的长度range,输入

alpha:`:透明度

animated:布尔值类型,动态绘图的一个参数

color:颜色,可以缩写成c

label:图例标签

linestyle:线的样式,可以缩写为ls,有如下几种:

linewidth:线的宽度,浮点型,可以缩写为lw

marker:折点的样式,有如下几种:

markeredgecolor:折点边缘颜色,可以缩写为mec:

markeredgewidth:折点边缘大小,可以缩写为mew

markerfacecolor:折点颜色,可以缩写为mfc

markersize:折点大小,可以缩写为ms

(4)plt.legend()参数

plt.legend(*args, **kwargs)

labels:图例的内容,列表loc:设置图例的位置,有以下几种:

bbox_to_anchor:指定图例在轴/图形中的位置ncol:图例列的数量,默认为1prop:有值时为获取的字体,无值时一般使用的是matplotli在这里插入代码片b.rc函数的获取字体的功能fontsize:字体大小,为数值时以磅为单位,一般没有指定prop的情况下,使用xx-small,x-small,small,medium,large,x-large,xx-largeshadow:是否在图例后面添加阴影framealpha:设置图例框架透明度title:图例标题,默认无title_fontsize:图例标题字体大小borderpad:图例边框的内边距,浮点型labelspacing:图例条目之间的垂直间距handlelength:图例句柄的长度handletextpad:图例句柄和文本之间的差距borderaxespad:轴与图例边框的距离

(5)plt.grid()参数

plt.grid(b=None, which='major', axis='both', **kwargs)

三、条形图基础绘制

1、简单条形图

(1)导入模块

from matplotlib import pyplot as pltimport matplotlib

(2)设置条形图的属性

#设置条形图每条的刻度,条形图高度 a = ['我','在','画','图','片','呢']b = ['18.11','29.23','4.91','31.54','9.17','6.91']matplotlib.rc("font",family='SimHei',size=18)plt.figure(figsize=(20,8),dpi=80)#设置坐标轴刻度、条形图高度、条形图宽度,颜色,rects = plt.bar(range(len(a)),[float(i) for i in b],width=0.3,color=['r','g','b','y','k','m'])# 在条形图上加水平居中的标注for rect in rects: #循环对每个条形图操作height = rect.get_height() #获取每个条形图的高度plt.text(rect.get_x() + rect.get_width() / 2, height+0.3, str(height),ha="center") #获取条形图在坐标轴上左边的坐标和宽度的一半的值,相加,加高度0.3,即在条形图中点上方0.3处

(3)绘制条形图

plt.xticks(range(len(a)),a)plt.yticks(range(0,41,5),range(0,41,5))plt.show()

(4)结果展示

2、横向条形图

from matplotlib import pyplot as pltimport matplotliba = ['你','看','我','画','的','图']b = ['18.11','29.23','4.91','31.54','9.17','6.91']matplotlib.rc("font",family='SimHei',size=18)plt.figure(figsize=(20,8),dpi=80)rects = plt.barh(range(len(a)),[float(i) for i in b],height=0.5,color=['r','g','b','y','k','m']) plt.yticks(range(len(a)),a)for rect in rects:width = rect.get_width()plt.text(width,rect.get_y()+0.5/2,str(width),va='center')plt.show()

3、并列条形图

import matplotlib.pyplot as pltimport numpy as npindex = np.arange(4)BJ = [50,55,53,60]Sh = [44,66,55,41]plt.bar(index,BJ,width=0.3,color='r')plt.bar(index+0.3,Sh,width=0.3,color='b')plt.xticks(index+0.3/2,index)plt.show()

4、堆叠条形图

import matplotlib.pyplot as pltimport numpy as npindex = np.arange(4)BJ = [50,55,53,60]Sh = [44,66,55,41]plt.bar(index,BJ,width=0.3,color='r')plt.bar(index,Sh,bottom=BJ,width=0.3,color='g') #以BJ为底部plt.show()

四、直方图基础绘制

1、直方图概念

用连续的数据,一系列高度不等的纵向条纹或者线段展示一组或者多组的数据分布情况,横轴表示数据范围,纵轴表示分布情况

2、直方图绘制

(1)导入模块

import matplotlibfrom matplotlib import pyplot as plt

(2)准备数据

time = [131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114,119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136, 126, 134, 95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117, 86, 95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123, 86, 101, 99, 136,123,117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116,108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125,138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140, 83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144, 83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137, 92,121, 112, 146, 97, 137, 105, 98, 117, 112, 81, 97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111,101, 110,105, 129, 137, 112, 120, 113, 133, 112, 83, 94, 146, 133, 101,131, 116, 111, 84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]

(3)创建画布,设置相关属性

plt.figure(figsize=(20, 8), dpi=100)matplotlib.rc('font',family='SimHei',size=18)# 设置组距distance = 4# 计算组数:用数据里最大的值减去最小值除以组距group = int((max(time) - min(time)) / distance)

(4)直方图绘制

plt.hist(time, bins=group, facecolor="blue", edgecolor="black", alpha=0.7)plt.xticks(range(min(time), max(time))[::2])plt.grid(linestyle="-.", alpha=0.5,color='k')plt.xlabel("电影时长")plt.ylabel("数据量")plt.show()

五、饼图基础绘制

#导入模块import matplotlib.pyplot as pltimport matplotlib#设置画布plt.figure(figsize=(20, 8), dpi=100)#显示中文字体matplotlib.rc('font',family='SimHei',size=14)#设置每个部分标签,扇形大小,颜色,扇形每个部分的突出值,label = ["数学", "语文", "英语"] size = [40, 60, 5]color = ["r", "g", "b"]explode = [0.05, 0.08, 0] patches, l_text, p_text = plt.pie(size, explode=explode, colors=color,labels=label, #设置扇形、标签、百分比标签实例labeldistance=1.2, #标签文本距离圆心位置,1.2倍半径autopct="%1.2f%%", #设置圆内文本数据格式shadow=True, #是否带有阴影startangle=90, #设置起始角度,默认从0开始逆时针旋转pctdistance=0.7) #设置圆内文本距圆心距离plt.legend( loc='center left')plt.axis("equal") plt.show()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。