Matplotlib

 

 

Matplotlib中的基本图表包括的元素

  • x轴和y轴 axis 水平和垂直的轴线
  • 轴标签 axisLabel 水平和垂直的轴标签
  • x轴和y轴刻度 tick 刻度标示坐标轴的分隔,包括最小刻度和最大刻度
  • x轴和y轴刻度标签 tick label 表示特定坐标轴的值
  • 绘图区域(坐标系) axes 实际绘图的区域
  • 画布 figure 呈现所有的坐标系

  

Matplotlib三层结构:

  • 容器层
    • 画板层(canvas)
    • 画布层(figure)
    • 绘图区/坐标系(x/y轴张成的区域)
  • 辅助显示层
  • 图像层

 

基础

使用plt.grid方法可以开启网格线,使用plt面向对象的方法,创建多个子图显示不同网格线

  • lw代表linewidth,线的粗细
  • alpha表示线的明暗程度
  • color代表颜色
  • axis显示轴向

 

设置坐标轴界限

  • plt.axis([xmin,xmax,ymin,ymax])

  注意:必须x,y轴同时设置界限

  • 可以通过xlim,ylim方法

面向对象风格设置画布样式面向对象风格设置画布样式

  • 使用面向对象风格设置画布样式,如果属性找不到,就使用set_XX函数设置
  • . + Tab键,快捷查看对象属性和方法

 

坐标轴标签

  • xlabel方法和ylabel方法(可以用字典来设置)
    • color 标签颜色
    • fontsize 字体大小
    • rotation 旋转角度

 

标题

  • plt.title()方法
    • loc {left,center,right}
    • color 标签颜色
    • fontsize 字体大小
    • rotation 旋转角度

 

legend方法

  • 两种传参方法:
  • 第一种传参方法:
    • 分别在plot函数中增加label参数,再调用legend()方法显示
    • 直接在legend方法中传入字符串列表
  • 第二种传参方法:
    • plt.plot(...label = xxx )

  loc参数

    loc参数用于设置图例标签的位置,一般在legend函数内
    matplotlib已经预定义好几种数字表示的位置
    loc参数可以是2元素的元组,

    • [0,0] 左下
    • [0,1] 左上
    • [1,0] 右下
    • [1,1] 右上
    • 图例也可以超过图的界限loc = (-0.1,0.9) 

  ncol参数

    ncol控制图例中有几列,在legend中设置ncol,需要设置loc

  linestyle、color、marker

    修改线条样式

axes1 = plt.subplot(221)
# True 开启网格线
# linewidth设置网格线的粗细
axes1.grid(True,linewidth=2)

axes2 = plt.subplot(222)
# alpha设置透明度 0-1之间的数
axes2.grid(True,alpha=0.5)

axes3 = plt.subplot(223)
axes3.grid(True,color='green')

axes4 = plt.subplot(224)
# 设置网格线方向
# linestyle/ls设置虚线
axes4.grid(True,axis='x')

  

注:matplotlib显示中文如何处理?  

###Windows解决方法###
from pylab import mpl

# 指定默认字体
mpl.rcParams['font.sans-serif'] = ['FangSong'] 

# 解决保存图像是负号'-'显示为方块的问题
mpl.rcParams['axes.unicode_minus'] = False 

 

保存图片:

使用figure对象的savefig的函数

  • filename

  含有文件路径的字符串或Python的文件型对象。图像格式由文件扩展名推断得出,例如,.pdf推断出PDF,.png推断出PNG (“png”、“pdf”、“svg”、“ps”、“eps”……)

  • dpi

  图像分辨率(每英寸点数),默认为100

  • facecolor

  图像的背景色,默认为“w”(白色)

设置plot的风格和样式:

plot语句中支持除X,Y以外的参数,以字符串形式存在,来控制颜色、线型、点型等要素,语法形式为: plt.plot(X, Y, ‘format’, …)

点和线的样式:

  • 颜色
    • 参数colorc
  • 透明度
    • alpha
  • 背景色
    • 设置背景色,通过plt.subplot()方法传入facecolor参数,来设置坐标系的背景色
  • 线型
    • 参数linestylels
  • 线宽
    • linewidthlw参数
  • 不同宽度的破折线
    • dashes参数(自定义破折线的样式:eg.dashes = [20,50,5,2,10,5])
  • 点型
    • marker 设置点形
      • 标记描述标记描述
        ’s’ 正方形 ‘p’ 五边形
        ‘h’ 六边形1 ‘H’ 六边形2
        ‘8’ 八边形

    • markersize 设置点形大小

 

多参数连用:

  

多个曲线同一设置:

  属性名声明,不可以多参数连用

  plt.plot(x1, y1, x2, y2, fmt, …)

多曲线不同设置:

  多个都进行设置时,多参数连用 plt.plot(x1, y1, fmt1, x2, y2, fmt2, …)

三种设置方式

  • 向方法传入关键字参数

  import matplotlib as mpl

  • 对实例使用一系列的setter方法

  plt.plot()方法返回一个包含所有线的列表,设置每一个线需要获取该线对象

    eg: lines = plt.plot(); line = lines[0]
    line.set_linewith()
    line.set_linestyle()
    ine.set_color()

  • 对坐标系使用一系列的setter方法

  axes = plt.subplot()获取坐标系

    set_title()
    set_facecolor()
    set_xticks、set_yticks 设置刻度值
    set_xticklabels、set_yticklabels 设置刻度名称

 

X、Y轴坐标刻度:  

  plt.xticks()和plt.yticks()方法

  • 需指定刻度值和刻度名称 plt.xticks([刻度列表],[名称列表])
  • 支持fontsize、rotation、color等参数设置
axes = plt.subplot(111)
axes.plot(x,np.sin(x))
# 使用画布对象设置坐标轴刻度和坐标轴刻度标签
axes.set_xticks([0,np.pi/2,np.pi,3*np.pi/2,2*np.pi])
axes.set_xticklabels(['0','$\pi$/2','π','3π/2',''],fontsize=20)

axes.set_yticks([-1,0,1])
axes.set_yticklabels(['min',0,'max'],fontsize=20

   

2D图形

1.直方图(hist())

  直方图的参数只有一个x!!!不像条形图需要传入x,y   

  参数:

  • bins(组数、组距)

    可以是一个bin数量的整数值,也可以是表示bin的一个序列。默认值为10

  • normed

    如果值为True,直方图的值将进行归一化处理,形成概率密度,默认值为False

  • color

    指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色

  • orientation

    通过设置orientation为horizontal创建水平直方图。默认值为vertical

 

2. 条形图(bar()、barh())

  条形图有两个参数x,y

  • width 纵向设置条形宽度
  • height 横向设置条形高度

  条形图适合比较各部分的大小 

 

3.饼图(pie())

  饼图只有一个参数x

  饼图适合展示各部分占总体的比例

   饼图阴影、分裂等属性设置:

  • labels参数设置每一块的标签;
  • labeldistance参数设置标签距离圆心的距离(比例值,只能设置一个浮点小数)
  • autopct参数设置比例值的显示格式(%1.1f%%);
  • pctdistance参数设置比例值文字距离圆心的距离
  • explode参数设置每一块顶点距圆形的长度(比例值,列表);
  • colors参数设置每一块的颜色(列表);
  • shadow参数为布尔值,设置是否绘制阴影
  • startangle参数设置饼图起始角度

 

 4.散点图(scatter())

  散点图需要两个参数x,y,但此时x不是表示x轴的刻度,而是每个点的横坐标!

  

3D图形

 曲面图:  

  导包

    from mpl_toolkits.mplot3d.axes3d import Axes3D
  使用mershgrid函数切割x,y轴

    X,Y = np.meshgrid(x, y)
  创建3d坐标系

    axes = plt.subplot(projection=’3d’)
  绘制3d图形

    p = axes.plot_surface(X,Y,Z,color=’red’,cmap=’summer’,rstride=5,cstride=5)
  添加colorbar

    plt.colorbar(p,shrink=0.5)

def createZ(x,y):
    return np.sin(x) + np.cos(y)*2 - np.pi/5

from mpl_toolkits.mplot3d.axes3d import Axes3D
axes = plt.subplot(projection='3d')

x = np.linspace(-np.pi,np.pi,100)
y = np.linspace(-np.pi,np.pi,100)

# 使用x,y生成一组网格
X,Y = np.meshgrid(x,y)
Z = createZ(X,Y)

p = axes.plot_surface(X,Y,Z,cmap='summer',rstride=5,cstride=5)

plt.colorbar(p,shrink=0.5)

   

玫瑰图/极坐标条形图:  

  创建极坐标,设置polar属性

    plt.axes(polar = True)
  绘制极坐标条形图

    index = np.arange(-np.pi,np.pi,2*np.pi/6)
    plt.bar(x=index ,height = [1,2,3,4,5,6] ,width = 2*np.pi/6)

# 玫瑰图
x = np.array([2,5,7,9,4,3,8])
plt.axes(polar = True)
plt.bar(x=list('abcdefg'),height=x)

   

 

图形内的文字、注释、箭头

1.控制文字属性的方法:Prop

  所有的方法会返回一个matplotlib.text.Text对象.

2.图形内的文字:text()

3.注释:annotate() 

  • xy参数设置箭头指示的位置
  • xytext参数设置注释文字的位置
  • arrowprops参数以字典的形式设置箭头的样式
  • width参数设置箭头长方形部分的宽度
  • headlength参数设置箭头尖端的长度,
  • headwidth参数设置箭头尖端底部的宽度
  • shrink参数设置箭头顶点、尾部与指示点、注释文字的距离(比例值),可以理解为控制箭头的长度
figure = plt.figure(figsize=(8,6))
axes = plt.subplot(111)
axes.plot(x,np.sin(x))

# s 注释的文字
# xy  箭头指向的位置
# xytext 注释文字放置的位置
# arrowprops没有arrowstyle键的设置方式
axes.annotate(s='this is a annotate',xy=(0.5,0.5),xytext=(0.8,0.8),
             arrowprops = {
                 'width':10,
                 'headlength':12,
                 'headwidth':15,
                 'shrink':0.2
             })

# 使用arrowstyle设置箭头样式
axes.annotate(s='this is a good text',xy=(-0.2,-0.2),xytext=(-0.4,-0.6),
             arrowprops = {
                'arrowstyle': 'fancy'
             })

  

  

 

 

 

  

 

posted @ 2019-08-13 11:44  JamJarBranch  阅读(151)  评论(0)    收藏  举报