Matplotlib库的基本使用

官网文档:https://matplotlib.org/

导库

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter

绘图基础语法与常用参数

1、掌握pyplot基础语法

创建画布与创建子图

第一部分的作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分。

函数名称 函数作用
plt.figure 创建一个空白画布,可以指定画布大小、像素
figure.add_subplot 创建并选中子图,可以指定子图的行数、列数和选中图片的编号

添加画布内容

第二部分是绘图的主题部分。可以先绘制图形再添加标签,但是添加图例一定要在绘图之后。添加各类标签和图例的函数表:

函数名称 函数作用
plt.title 在当前图形中添加标题,可以指定标题的名称、位置、颜色、字体大小等参数
plt.xlabel 在当前图形中添加x轴名称,可以指定位置、颜色、字体大小等参数
plt.ylabel 在当前图形中添加y轴名称,可以指定位置、颜色、字体大小等参数
plt.xlim 指定当前x轴的范围,只能确定一个数值区间,而无法使用字符串标识
plt.ylim 指定当前y轴的范围,只能确定一个数值区间,而无法使用字符串标识
plt.xticks 指定x轴刻度的数目与取值
plt.yticks 指定y轴刻度的数目与取值
plt.legend 指定当前图形的图例,可以指定图例的大小、位置、标签

保存与显示图形

第三部分主要用于保存和显示图形,这部分内容常用函数只有两个,并且参数很少

函数名称 函数作用
plt.savefig 保存绘制的图形,可以指定图形的分辨率、边缘的颜色等参数
plt.show 在本机显示图形

##2、设置pyplot的动态rc参数

pyplot使用rc配置文件来自定义图形的各种默认属性,被称为rc配置或rc参数。在pyplot中,几乎所有的默认属性都是可以控制的,例如视图窗口大小以及每英寸点数、线条宽度等等。

默认的rc参数可以在Python交互式环境中动态修改。所有存储在字典变了中的rc参数多美称为ecParams。rc参数在修改后,绘图时使用的默认参数会发生改变。

plt.rcParams['rc参数名称'] = params

rc参数名称 解释 取值
lines.linewidth 线条宽度 去0~10之间的数值,默认是1.5
lines.linestyle 线条样式 可取’-’、’–’、’-.’、’:‘4种,默认’-’
lines.marker 线条上点的形状 20种种可取值,默认为None
line.markersize 点的大小 去0~10之间的数值,默认为1

lines.linestyle参数取值和意义

取值 意义
‘-’ 实线
‘-.’ 点线
‘–’ 长虚线
‘:’ 短虚线

lines.marker参数取值和意义

取值 意义
‘o’ 圆圈
‘D’ 菱形
‘h’ 六边形1
‘H’ 六边形2
‘-’ 水平线
‘8’ 八边形
‘p’ 五边形
‘,’ 像素
‘+’ 加号
‘None’
‘.’
‘s’ 正方形
‘*’ 星号
‘d’ 小菱形
‘v’ 一角朝下的三角形
‘<’ 一角朝左的三角形
‘>’ 一角朝右的三角形
‘^’ 一角朝上的三角形
‘’ 竖线
‘x’ X

###中文字符问题

由于默认的pyplot字体并不支持中文字符,因此需要通过设置

plt.rcParams['font.sans-serif'] = 'SimHei'来改变绘图时的字体,使图形正常显示中文。由于改变字体后,会导致坐标轴的部分字体无法显示,因此需要同时修改plt.rcParams['axes.unicode_minus'] = 'False',使正常显示符号。

  • 除了有设置线条和字体的rc参数外,还有设置文本、箱线图、坐标轴、刻度、图例、标记、图片、图像保存等的rc参数。

分析特征间的关系

1、绘制散点图

散点图,又称散点分布图,利用坐标点的分布形态反映特征间的统计关系的一种图形。值由点在图表中的位置标示,类别由图表中的不同标记标示,通常用于比较跨类别的数据。

散点图可以提供两类关键信息:

  • 特征之间是否存在数值或者数量的关联趋势,关联趋势是线性还是非线性。
  • 分析离群点和离群值是否在建模分析中产生很大的影响

pyplot中绘制散点图的函数:

import matplotlib.pyplot as plt
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)

常用参数说明:

参数名称 说明
x,y 接收array。表示x轴和y轴对应的数据
s 接收数值或者一维的array。指定点的大小,若传入一维的array,表示每个点的大小,默认为None
c 接收颜色或者一维的array。指定点的颜色,若传入一维的array,表示每个点的颜色,默认为None
marker 接收特定string。表示绘图的点的类型。默认为None
alpha 接收0~1的小数。表示点的透明度。默认为None

2、绘制折线图

  • 主要作用:查看因变量y随着自变量x改变的趋势,最适合用于显示随时间而变化的连续数据。同时还可以看出数量的差异,增长趋势的变化。
  • 可同时接收多组数据,绘制多条折线图:plot(x1,y1,x2,y2)
  • 折线图绘制:plt.plot(*args,**kwargs)

常用参数说明:

参数名称 说明
x,y 接收array。表示x轴和y轴对应的数据
color 接收特定的string。指定线条的颜色,默认为None
linestyle 接收特定string。指定线条类型。默认为’-’
marker 接收特定string。表示绘制的点的类型,默认为None
alpha 接收0~1的小数。表示点的透明度,默认为None

分析特征内部数据分布于分散状况

1、绘制直方图

  • 查看各分组数据的数量分布,判断总体分布情况
plt.bar(left,height,width=0.8,bottom=None,hold=None,data=None,**kwargs)

常用参数说明:

参数名称 说明
left 接收array。表示x轴数据
height 接收array。表示x轴所代表数据的数量
width 接收0~1之间的float。指定直方图宽度,默认为0.8
color 接收特定string或者包含颜色字符串的array。表示直方图颜色。

2、绘制拼图

  • 确定每一项的占比
  • 反映部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的大小

基础语法

import matplotlib.pyplot as plt;
 
plt.pie(        x,        # 元组或列表,指定绘图数据
        explote=None,      # 元组或列表,指定饼图的突出部分,或者切割出某一部分
        labels=None,       # 元组或列表,为饼图的数据添加相应的标签说明
        colors=None,       # 元组或列表,指定饼图的填充色
        autopct=None,      # 格式化字符串,自动添加百分比显示
        shadow=False,      # 布尔,是否添加饼图的阴影效果
        startangle=None,   # 数值,设置饼图初始摆放角度,即数据显示分割的起始角度
        
        pctdistance=0.6,   # 数值,设置百分比标签与圆心的距离
        labeldistance=1.1, # 数值,设置各扇形标签与圆心距离
        center=(0,0),      # 元组,指定饼图中心点位置
        radius=None,       # 数值,设置饼图半径大小
        counterclock=True, # 布尔,顺时针或逆时针显示数据
        wedgeprops=None,   # 字典,设置饼图内外边界(粗细,颜色等)
        textprops=None,    # 字典,设置饼图中文本属性(字体大小,颜色等)
        frame=False        # 布尔,是否显示饼图背后图框,如果为True,
                           # 则需同时控制图框x轴、y轴范围和饼图中心位置
        )

3、绘制箱线图

  • 提供有关数据位置和分散情况的关键信息,尤其在比较不同特征时,更可表现其分散程度差异
plt.boxplot(
        x, notch=None, sym=None, vert=None, whis=None,
        positions=None, widths=None, patch_artist=None,
        bootstrap=None, usermedians=None, conf_intervals=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, manage_ticks=True, autorange=False,
        zorder=None, *, data=None)

常用函数说明:

参数名称 说明
x 接收array。表示用于绘制箱线图的数据。
notch 接收boolean。表示中间箱体是否有缺口
sym 接收特定sting。指定异常点形状。默认为None
vert 接收boolean。表示图形是纵向或者横向
position 接收array。表示图形位置。默认为None
widths 接收scalar或者array。指定每一个箱线图的标签,默认为None
labels 接收array。指定每一个箱线图的交钱,默认为None
meanline 接收boolean。表示是否显示均值线,默认为False

方法1:利用pandas包中的Series.plot()、DataFrame.plot()或DataFrame.boxplot()方法;

方法2:利用seaborn包中的cataplot()或者boxplot(),其中seaborn.boxplot()是seaborn.cataplot()的参数kind='box’时的一种情况;

方法3:利用matplotlib包中axes对象的boxplot()方法。

4、等值线与等高线图

import numpy as np
import matplotlib.pyplot as plt
dx=0.01;dy=0.01
x=np.arange(-2.0,2.0,dx)
y=np.arange(-2.0,2.0,dy)
X,Y=np.meshgrid(x,y)
def f(x,y):
    return(1-y**5+x**5)*np.exp(-x**2-y**2)
C=plt.contour(f(X,Y),8,colors='black')  #生成等值线图
plt.contourf(f(X,Y),8)
plt.clabel(C)
plt.colorbar()

图形绘制

三维图

直线绘制

#直线绘制
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot(y[0,:],y[1,:],y[2,:])
ax.legend()
plt.show()

表面图

fig = plt.figure()
ax = fig.gca(projection='3d')
X,Y = np.meshgrid(y[0,:10],y[1,:10])
surf = ax.plot_surface(X,Y,y[2,:10],cmap=cm.coolwarm,linewidth=0, antialiased=False)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()

你可能感兴趣的:(Python数据挖掘,python)