Python数据可视化--Matplotlib绘制图形

Python数据可视化--Matplotlib绘制图形_第1张图片

  1. 频数分析
    a. 定性分析:柱状图、饼形图
    i. 柱状图:柱的高度代表某种类型的频数
    ii. 饼状图:面积代表某种类型的频数
    b. 定量分析:直方图、分布曲线
    i. 直方图:将定量数据划分为若干连续区间,在这些连续的区间上绘制柱(类似柱状图)
    ii. 分布曲线:对应数据的分布函数
  2. 关系分析:散点图
    a. 散点图:分别以自变量和因变量作为横纵坐标,当自变量与因变量线性相关时,在散点图中,点近似分布在一条直线上
  3. 探索分析:箱型图
    a. 箱型图:了解数据的中心位置,发散程度以及偏差程度
    i. Q2所指的红线为中位数
    ii. Q1所指的蓝框下侧为下四分位数,Q3所指的蓝框上侧为上四分位数,Q3-Q1为四分为差。四分位差也是衡量数据的发散程度的指标之一
    iii. 上界线和下界线是距离中位数1.5倍四分位差的线,高于上界线或者低于下界线的数据为异常值。

Python数据可视化--Matplotlib绘制图形_第2张图片
一、Why’s Matplotlib
Matplotlib:风格类似于Matlab,是基于Python的绘图库,属于Python中最基础的画图工具。他提供了一整套与matlab相似的命令API,十分适合交互式绘图。
除了Matplotlib外,还有几个较常用的绘图库:

  • Seaborn
    Seaborn是基于Matplotlib的高级可视化效果库,偏向于统计作图,可用于数据挖掘和机器学习中的变量特征选取。相对Matplotlib,其语法相对简单,但绘图方式较为局限。

  • Bokeh
    Bokeh是基于JavaScript来实现交互可视化的,可以在WEB浏览器中实现美观的视觉效果。缺点在于:版本时常更新但有时不向下兼容、语法晦涩等。

  • ggplot
    ggplot是基于R语言的ggplot2制作的python版本库,但目前Yhat已停止对该库的维护。

  • Plotly
    Plotly支持Python和R,优点在于可提供WEB在线交互,配色也好看。

  • Mapbox
    Mapbox是处理地理数据引擎更强的可视化工具库。

二、What’s Matplotlib
pyplot是matplotlib的一个子模块,主要为底层的面向对象的绘图库提供状态机界面。状态机隐式地自动创建数字和做标轴以实现所需的绘图。
matplotlib中所有内容都按照层次结果进行组织,顶层就是由pyplot提供的matplotlib“状态机环境”。基于这个状态机环境,我们可以创建图形。
Python数据可视化--Matplotlib绘制图形_第3张图片
接下来介绍matplotlib中几个重要的要素:Figure、Axes、Axis
Python数据可视化--Matplotlib绘制图形_第4张图片

  • Figure
    Figure类似于一块画板,是包裹Axes、titles、legends等组件的最外层窗口。
  • Axes(子图)
    Axes类似于画纸,一个Figure上可以有多张画纸,但至少有一个可以显示内容的画纸。
  • Axis(轴)

通过程序来看结果:
1、生成空画板

fig=plt.figure()
fig.suptitle('No axes on thie figure')
>>>
Text(0.5,0.98,'No axes on thie figure')
<Figure size 432x288 with 0 Axes>

2、贴上画纸

fig.ax_lst=plt.subplots(2,2)
plt.show()

Python数据可视化--Matplotlib绘制图形_第5张图片
plt.plot(x,y,format_string) 中参数
x轴数据,y轴数据,format_string控制曲线的格式(颜色、风格以及标记)
颜色字符color
Python数据可视化--Matplotlib绘制图形_第6张图片
风格字符linestyle
Python数据可视化--Matplotlib绘制图形_第7张图片
标记字符marker
Python数据可视化--Matplotlib绘制图形_第8张图片
除此之外还有:
markerfacecolor 标记颜色
markersize 标记大小

#绘出四个点,并用星状表示虚线连接
plt.plot([1,2,3,6],[4,5,8,1],':*',markersize=10,color = '#ff0000') 
plt.show()

Python数据可视化--Matplotlib绘制图形_第9张图片
此外,还有一些常用方法:

plt.title("first graph") //图像标题
plt.legend(loc=n)  //图像图例,n=1234不同位置
plt.ylabel(‘y轴标签’)    //y轴标签
plt.axis([-1,10,0,6])   //x轴范围[-110],y轴[06]
plt.savefig(‘test’,dpi=600) //图像保存,默认为png格式 
plt.show()   //显示图像

三、How to use Matplotlib
全局设置:

import numpy as np
from matplotlib import pyplot as plt#导入pyplot绘图工具
%matplotlib inline #在Jupyter notebook中由于每个人的环境有差异,有些必须执行plt.show()才能将图片显示出来,加上这行就不用show()也能显示了

接下来展示条形图(plot)、散点图(scatter)、柱状图(bar)、直方图(hist)、箱型图(boxplot)以及扇形图(pie)等用法。
条形图plot:反映数据随时间变化走势(一个变量随另一个变量变化的走势)

x = np.arange(9)
y = np.sin(x)
z = np.cos(x)
# marker数据点样式,linewidth线宽,linestyle线型样式,color颜色
plt.plot(x, y, marker="*", linewidth=3, linestyle="--", color="orange",markersize='10')
plt.plot(x, z)
plt.title("matplotlib")
plt.xlabel("height")
plt.ylabel("width")
# 设置图例
plt.legend(["Y","Z"], loc="upper right")
plt.grid(True)
plt.show()

Python数据可视化--Matplotlib绘制图形_第10张图片

散点图scatter:反映两个变量间相关关系

#散点图
x=np.arange(1,20)
y=np.random.randn(19)
plt.scatter(x,y,label='x',color='k',s=25,marker='o')

Python数据可视化--Matplotlib绘制图形_第11张图片

柱状图bar:比较数值大小(区别直方图)

#柱状图
x = np.arange(10)   #x为x轴上刻度,代表y中第几个数字
y = np.random.randint(0,30,10)
plt.bar(x,y,label='柱状图1')
plt.legend(loc=1)

Python数据可视化--Matplotlib绘制图形_第12张图片
matlibplot.pyplot 画图 axes.bar() x轴默认排序解决方法:
https://blog.csdn.net/qq_35318838/article/details/80198307

直方图hist:查看数据频数分布

#直方图
ages=np.random.randint(0,100,30) #ages表示生成30个0-100间整数
bins=np.arange(0,100,10)  #bins表示x轴刻度由0-100分为五份
plt.hist(ages,bins,rwidth=0.8)

Python数据可视化--Matplotlib绘制图形_第13张图片
箱型图boxplot:数据分布情况,可查看异常值情况

#箱型图
spread = np.random.rand(50) * 100
center = np.ones(25) * 50
flier_high = np.random.rand(10) * 100 + 100
flier_low = np.random.rand(10) * -100
data = np.concatenate((spread, center, flier_high, flier_low))
plt.boxplot(data)
plt.title('Basic Plot')

Python数据可视化--Matplotlib绘制图形_第14张图片
扇形图pie

#扇形图
players=[10,20,3,90]
types=['wow','wars','cs','lol']
plt.figure(figsize=(10,10))
plt.pie(players,#数值
        labels=types,#标签
        shadow=True,#阴影
        autopct='%1.2f%%',#百分比显示
        explode=(0.2,0,0,0),#突出显示第一个
        startangle=90,#旋转角度
        textprops={'fontsize':20})#字体属性,这里设大小为20

Python数据可视化--Matplotlib绘制图形_第15张图片
此外还有堆叠图(stackplot)等用法。
子图

#子图
plt.figure(figsize=(8,6),dpi=100) #设定画板的宽度高度,单位为英寸,dpi绘图对象的分辨率,即每英寸多少个像素,默认80
#subplot(numRows,numCols,plotnum)
plt.subplot(2,2,2) #两行两列第二个位置
plt.plot([0,1],[0,1],color='r')
plt.title('A')
plt.subplot(2,2,1) #两行两列第一个位置
plt.plot([0,1],[0,1],color='b')
plt.title('B')
plt.subplot(2,1,2) #两行一列中第二个位置
plt.scatter(range(1,10,1),np.random.rand(9),color='orange')
plt.title('C')

Python数据可视化--Matplotlib绘制图形_第16张图片

参考:
matplotlib绘制各类图形
Matplotlib系列—pyplot的plot( )函数
Matplotlib常用绘图示例

Python数据可视化--Matplotlib绘制图形_第17张图片
如何选择合适的图表:https://jingyan.baidu.com/article/37bce2be58288a1003f3a242.html

你可能感兴趣的:(python学习,Matplotlib)