Matplotlib mat(矩阵)+plot(画图)+lib(library 表示库的意思)
该库是专门用于开发2D图表(包括3D图表),使用起来很简单,以渐进,交互式方式实现数据可视化
为什么学习matplotlib?
是为了进行数据可视化,可视化是在整个数据挖掘过程中的关键辅助工具,可以清晰的理解数据,从而调整分析方法,总体来说就是将数据进行可视化,更直观的呈现,使数据更加客观,更具说服力
推荐两个网站:https://d3js.org ; https://bost.ocks.org echarts
实现一个简单的matplotlib画图
主要就是导入正确的包,创建画布以及使用plot绘制函数和show显示函数,使用不同的画图函数最终显示的结果也是不同的
拓展知识点:Matplotlib三层结构(了解,就是为了更好的理解作图的步骤,但其实不了解也不影响画图,毕竟步骤就那么几步,项目中已经实现过)
1.容器层
2.辅助显示层
3.显示层
接下来来学习折线图(plot)与基础绘图功能
以上操作是最基本的对折线图的绘制,接下俩可以设置其中的属性
设置画布属性与图片保存
注意dpi的含义(dot per inch),其他参数已经很熟悉 注意保存时用的是savefig()函数,里面的参数是path,即保存路径
修改x,y轴刻度
第一个参数为想要的刻度值,第二个可选,可以是刻度格式的要求,不一定需要
中文问题解决
分三步解决:
1.安装字体
2.删除matplotlib缓存文件
3.配置文件matplotlibrc的修改(自行百度)
添加网格显示(为了更加清晰的显示数据)
第一个参数是默认的,可以不写,决定的是网格的显示与否;第二个是网格的类型;第三个是透明度
添加描述信息
涉及到的函数就是xlabel,ylabel,title等,或者还有Legend,是用于再图像中显示图例的
在上面的例子中只在一个画布中绘制了一个折线图,如果还想绘制另一组数据的折线图,需要再次调用plot函数
在调用plot函数时,可以设置color以及linestyle
plt.legend(loc="best")
legend中可以传入的参数:
但一般还是什么都不写
多个坐标系显示-plt.subplots(面向对象的画图方法)
在同一个画布中同时绘制多个子图,如下图所示:
折线图应用场景
1.呈现公司产品(不同区域)每天活跃用户数
2.呈现app每天下载数量
3.呈现产品新功能上线后,用户点击次数随时间的变化
即某一指标随时间变化的状况
拓展:plt.plot()也能绘制各种数学函数图像,例如:
x的数据要很多,要密集,这样图像看起来会是连续的
常见图表
plot()
scatter()
bar()
histogram()
pie()
使用时调用函数传入数据即可
柱状图(与直方图区分)
直方图
直方图形状类似柱状图却和柱状图有完全不同的含义,直方图牵涉统计学的概念,首先要对数据进行分组,然后统计每个分组内数据元的数量。在坐标系中,横轴标出了每个组的端点,纵轴表示频数,每个矩形的高代表对应的频数,称这样的统计图为频数分布直方图
相关概念:
组数:在统计数据时,我们把数据按照不同的范围分成几个组,分成的组的个数称为组数
组距:每一组两个端点的差 图中为5
直方图和柱状图的区别
1.直方图展示数据的分布,柱状图比较数据的大小
2.直方图X轴为定量数据,柱状图X轴为分类数据
3.直方图柱子无间隔,柱状图柱子有间隔
4.直方图柱子宽度可不一,柱状图柱子宽度须一致:柱状图柱子的宽度因为没有数据含义,所以宽度必须一致,但是在直方图中,柱子的宽度代表了区间的长度,根据区间的不同,柱子的宽度可以不同,但理论上应为单位长度的倍数
组数需要自己求出来:(数据的最大值max-数据的最小值min)//组距 进行整除或者不整除也可以
normed的设定影响到是否在图中显示频率,默认是不显示的
直方图注意点
1.注意组距:组距会影响直方图呈现出来的数据分布,因此在绘制直方图的时候需要多次尝试改变组距 还有坐标轴刻度的问题也要注意,为了数据显示的完整性也需要调整
2.注意Y轴所代表的变量
Y轴上的变量可以是频次(数据出现了多少次),频率(频次/总次数),频率/组距,不同的变量会让直方图描述的数据分布意义不同
直方图应用场景
1.用于表示分布情况;2.通过直方图还可以观察和估计哪些数据比较集中,异常或者孤立的数据分布在何处
饼图
传入数据之后会自动计算百分比 autopct设定的是格式化输出
1表示占一个位置,.2表示保留两位小数
%%是为了结果显示中能出现百分号
添加这一行代码后会让图像显示更正常
记得添加legend设置图例,担当类别过多时不适合再用饼图来表示数据分布,更宜采纳柱状图来显示数据占比