900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 数据分析入门之Matplotlib数据可视化基础(散点图 折线图 直方图 饼图 箱线图)

数据分析入门之Matplotlib数据可视化基础(散点图 折线图 直方图 饼图 箱线图)

时间:2021-04-27 10:16:47

相关推荐

数据分析入门之Matplotlib数据可视化基础(散点图 折线图 直方图 饼图 箱线图)

文章目录

1、掌握pyplot基础语法1.1、基本绘图流程1.2、创建画布与创建子图1.2.1、设置画布大小1.2.2、添加图列1.2.3、解决中文乱码1.3、添加画布内容1.4、保存与展示图形1.5、查看本地文件夹2、绘制散点图2.1、导入数据2.2、解决"Object arrays cannot be loaded when allow_pickle=False"错误2.3、绘制散点图3、绘制折线图4、绘制直方图5、绘制饼图6、绘制箱线图6.1、绘制单个箱线图6.2、绘制多个箱线图

1、掌握pyplot基础语法

1.1、基本绘图流程

1.2、创建画布与创建子图

第一部分主要作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制。

import matplotlib.pyplot as pltimport numpy as np

1.2.1、设置画布大小

plt.figure(figsize=(4,4))x = np.arange(10)y1 = np.sin(x)y2 = np.cos(x)plt.plot(x,y1)plt.show()

1.2.2、添加图列

plt.plot(x,y1)plt.plot(x,y2)plt.legend(['sin()','cos()'])plt.title('三角函数图列')plt.xlabel('x值')plt.ylabel('y值')plt.show()

1.2.3、解决中文乱码

from matplotlib import rcParams#支持中文plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号plt.plot(x,y1)plt.plot(x,y2)plt.legend(['sin()','cos()'])plt.title('三角函数图列')plt.xlabel('x值')plt.ylabel('y值')plt.show()

1.3、添加画布内容

第二部分是绘图的主体部分。其中添加标题,坐标轴名称,绘制图形等步骤是并列的,没有先后顺序,可以先绘制图形,也可以先添加各类标签。但是添加图例一定要在绘制图形之后。

1.4、保存与展示图形

主要用于保存和显示图形

from matplotlib import rcParams#支持中文plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号x = np.arange(10)#x轴y1 = np.sin(x)#y轴y2 = np.cos(x)plt.plot(x,y1)#画sin()图像plt.plot(x,y2)#画cos()图像plt.legend(['sin()','cos()'])#标明图列plt.title('三角函数图列')#显示标题plt.xlabel('x值')#标记x轴plt.ylabel('y值')#标记y轴plt.savefig('./sin_cos.png')#保存图片到本地plt.show()#展示图片

1.5、查看本地文件夹

import osos.listdir('./')

['.ipynb_checkpoints','Matplotlib数据可视化基础.ipynb','sin_cos.png','国民经济核算季度数据.npz']

2、绘制散点图

散点图(scatter diagram)又称为散点分布图,是以一个特征为横坐标,另一个特征为纵坐标,利用坐标点(散点)的分布形态反映特征间的统计关系的一种图形。值是由点在图表中的位置表示,类别是由图表中的不同标记表示,通常用于比较跨类别的数据。scatter函数: matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, alpha=None, **kwargs) 常用参数及说明如下表所示:

2.1、导入数据

data = np.load('./国民经济核算季度数据.npz')#allow_pickle=Truedata.files

['columns', 'values']

查看数据:

2.2、解决"Object arrays cannot be loaded when allow_pickle=False"错误

如果导入数据后,查看数据报错,可以把导入方式改为 data = np.load(Path,allow_pickle=True)

data = np.load('./国民经济核算季度数据.npz',allow_pickle=True)#allow_pickle=True用于解决报错问题data['columns']#相当于header

array(['序号', '时间', '国内生产总值_当季值(亿元)', '第一产业增加值_当季值(亿元)', '第二产业增加值_当季值(亿元)','第三产业增加值_当季值(亿元)', '农林牧渔业增加值_当季值(亿元)', '工业增加值_当季值(亿元)','建筑业增加值_当季值(亿元)', '批发和零售业增加值_当季值(亿元)', '交通运输、仓储和邮政业增加值_当季值(亿元)','住宿和餐饮业增加值_当季值(亿元)', '金融业增加值_当季值(亿元)', '房地产业增加值_当季值(亿元)','其他行业增加值_当季值(亿元)'], dtype=object)

data['values']#相当于body

array([[1, '2000年第一季度', 21329.9, ..., 1235.9, 933.7, 3586.1],[2, '2000年第二季度', 24043.4, ..., 1124.0, 904.7, 3464.9],[3, '2000年第三季度', 25712.5, ..., 1170.4, 1070.9, 3518.2],...,[67, '第三季度', 190529.5, ..., 15472.5, 12164.1, 37964.1],[68, '第四季度', 211281.3, ..., 15548.7, 13214.9, 39848.4],[69, '第一季度', 180682.7, ..., 17213.5, 12393.4, 42443.1]],dtype=object)

2.3、绘制散点图

plt.scatter(x,y,s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

(1) 绘制第一产业增加值

plt.scatter(range(69),data['values'][:,2])plt.show()

(2) 绘制第一、二、三产业增加值

for i in [3,4,5]:#分别对应一二三产业plt.scatter(range(69),data['values'][:,i])plt.legend(['1','2','3'])plt.show()

3、绘制折线图

折线图(line chart)是一种将数据点按照顺序连接起来的图形。可以看作是将散点图,按照x轴坐标顺序连接起来的图形。折线图的主要功能是查看因变量y随着自变量x改变的趋势,最适合用于显示随时间(根据常用比例设置)而变化的连续数据。同时还可以看出数量的差异,增长趋势的变化。plot函数 matplotlib.pyplot.plot(*args, **kwargs) plot函数在官方文档的语法中只要求填入不定长参数,实际可以填入的主要参数主要如下:

(1) 绘制一二三产业的折线图

from matplotlib import rcParams#支持中文plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号for i in [3,4,5]:#分别对应一二三产业plt.plot(range(69),data['values'][:,i])plt.legend(['第一产业','第二产业','第三产业'])plt.show()

(2) 设置相关样式

l = ['r','b','c']#颜色m = ['o','d','*']#形状分别为:圆形,菱形,星形for j,i in enumerate([3,4,5]):plt.plot(range(69),data['values'][:,i],c=l[j],marker=m[j],alpha=0.5)#alpha为透明度plt.legend(['第一产业','第二产业','第三产业'])plt.show()

(3) 样式调整

l = ['r','b','c']#颜色m = ['o','d','*']#形状分别为:圆形,菱形,星形#plt.xlim((0,10))#设置数值的显示范围plt.figure(figsize=(20,6))#设置图像画布比例for j,i in enumerate([3,4,5]):plt.plot(data['values'][:,1],data['values'][:,i],c=l[j],marker=m[j],alpha=0.5)#alpha为透明度plt.legend(['第一产业','第二产业','第三产业'])plt.xticks(rotation=90)#x轴数据旋转90°plt.show()

4、绘制直方图

直方图(Histogram)又称质量分布图,是统计报告图的一种,由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据所属类别,纵轴表示数量或者占比。用直方图可以比较直观地看出产品质量特性的分布状态,便于判断其总体质量分布情况。直方图可以发现分布表无法发现的数据模式、样本的频率分布和总体的分布。bar函数: matplotlib.pyplot.bar(left,height,width = 0.8,bottom = None,hold = None,data = None,** kwargs ) 常用参数及说明如下表所示:

data['values']

array([[1, '2000年第一季度', 21329.9, ..., 1235.9, 933.7, 3586.1],[2, '2000年第二季度', 24043.4, ..., 1124.0, 904.7, 3464.9],[3, '2000年第三季度', 25712.5, ..., 1170.4, 1070.9, 3518.2],...,[67, '第三季度', 190529.5, ..., 15472.5, 12164.1, 37964.1],[68, '第四季度', 211281.3, ..., 15548.7, 13214.9, 39848.4],[69, '第一季度', 180682.7, ..., 17213.5, 12393.4, 42443.1]],dtype=object)

数据可视化:

dt = data['values'][68,3:6]#读取序列号为69的一二三产业数据plt.bar(range(len(dt)),dt)plt.xticks(range(len(dt)),['第一产业','第二产业','第三产业'])plt.show()

5、绘制饼图

饼图(Pie Graph)是将各项的大小与各项总和的比例显示在一张“饼”中,以“饼”的大小来确定每一项的占比。饼图可以比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的大小,而且显现方式直观。pie函数 matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, … ) 常用参数及说明如下表所示:

plt.figure(figsize=(4,4))#设置画布大小,图像显示为正圆#画图,autopct显示百分比,explode向外凸,labels为图列标签,labeldistance为距离plt.pie(dt,autopct='%.2f%%',explode=[0.2,0,0],labels=['第一产业','第二产业','第三产业'],labeldistance=1.4)plt.show()

6、绘制箱线图

箱线图(boxplot)也称箱须图,其绘制需使用常用的统计量,能提供有关数据位置和分散情况的关键信息,尤其在比较不同特征时,更可表现其分散程度差异。

箱线图利用数据中的五个统计量(最小值、下四分位数、中位数、上四分位数和最大值)来描述数据,它也可以粗略地看出数据是否具有对称性、分布的分散程度等信息,特别可以用于对几个样本的比较,如图:

boxplot函数

matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None,meanline=None, labels=None, … )

6.1、绘制单个箱线图

plt.boxplot(data['values'][:,3])plt.show()

6.2、绘制多个箱线图

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