美文网首页Python data analyse & AI
绘图与可视化——Matplotlib

绘图与可视化——Matplotlib

作者: 文婷_5250 | 来源:发表于2018-04-24 21:18 被阅读12次

    Matplotlib 入门知识

    matplotlib在Python中应用最多的2D图像的绘图工具包,使用matplotlib能够非常简单的可视化数据。在matplotlib中使用最多的模块就是pyplot。pyplot非常接近Matlab的绘图实现,而且大多数的命令及其类似Matlab.当然,与Matlab类似,需要很多的数学运算,因此numpy这个组件同样是必不可少的。所以很多人说python+matplotlib+numpy就是MATLAB。
    首先,在matplotlib建议使用别名,引入包,这样方便以后模块的使用,一般以以下两句开始:

    import numpy as np
    import matplotlib.pyplot as plt

    对plot函数的讲解

    上面介绍了简单的绘图,用的基本上都是plot,因此有必要对plot函数进行简单的介绍。官网参考网址:plot使用。熟悉Matlab的人对plot不会陌生,在matplotlib中的使用方式大致和Matlab中是一致的,使用plot,可以对点的标记的样式以及线条的样式进行设置。

    函数的声明为:matplotlib.pyplot.plot(*args, **kwargs)。args的参数的长度是不定 的,可以设置很多的属性,kwargs主要是应用于设置线条的属性。对于标注和线条的样式,可以通过简单的字符来表示。
    More

    一些单词

    plot 绘图 axis 轴线 axisymmetric 轴对称的 spines 象限 tick 标记
    solid line 实线 dashed line (--)虚线 dash-dot 点画线 dotted line (::)虚线
    pixel marker (,)像素标记 triangle down (^)下三角标记 square marker 正方形标记

    figure对象画图

    接下来调用figure创建一个绘图对象,并且使用它成为当前的绘图对象。
    figsize参数指定对象的宽度和高度,单位为英寸;dpi:分辨率,即每个英寸多少像素,缺省值是80,如下创建窗口的宽度为8*80=640像素。

    put.figure(figsize=(8,4))

    plot函数画图

    也可以不创建绘图对象直接用plot函数绘图,matplotlib会自动创建一个绘图对象。

    plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)
    plt.plot(x,z,"b--",label="$cos(X^2)$")

    • label: 给绘制的图一个名字
    • linewidth 曲线宽度
    • b--颜色和线型
    其他函数设置属性

    plt.xlabel("Time(s)")
    plt.ylabel("Volt")
    plt.title("PyPlot Forsdt Example")
    plt.ylim(-1.2,1.2)
    plt.legend()

    • x/y label: x/y轴的文字
    • title:图的标题
    • ylim: y轴范围
    • legend: 显示图示

    显示出所有绘图对象:

    plt.show()

    多幅图表

    如果需呀同时绘制多幅图表的话,可以传递一个整数参数指定对应图标的序号给figure对象,也可以使用subplot函数绘制有多个轴的图片。

    subplot(numRows,numCols,plotNum)
    subplot在plotNum指定的区域中创建一个轴对象,如新创建的轴与之前轴重叠的话,之前的会被删除。
    创建3行2列6个轴,通过axisbg参数给每个轴设置不同的颜色:
    for idx, color in enumerate("rgbyck"):
    plt. subplot(320+idx+1.axisbg=color)
    plt.show()
    sup=bplots_adjust()调节轴间距及边框间距。

    保存图像文件

    plt.savefig("test.png",dpi=120)
    dpi为120输出8*120个像素宽度图片。

    多幅图时选定图并绘图

    创建2个图1,2,在图2创建上下并排两个子图,用变量分别保存:

    plt.figure(1)
    plt.figure(2)
    ax1 = plt.subplot(211)
    ax2 = plt.subplot(212)
    在循环中,选定图1为当前图,在上面绘图,然后让图2两个子图为当前图,并绘图:
    for i in xrange(5):
    plt.figure(1)
    plt.plot(x,np.exp(Ix/3))
    plt.sca(ax1)
    plt.plot(x,np,sin(I
    x))
    plt.sca(ax2)
    plt.plot(x,np,cos(I*x))
    plt.show()

    坐标轴设定

    Axis容器包括坐标轴的刻度线/刻度标签/坐标网格及坐标轴标题等,刻度分主刻度和副刻度。以下绘制线图并得到当前图的X轴对象axis:

    plt.plot([1,2,3],[4,5,6])
    plt.show()
    axis = plt.gca().xaxis
    axis.get_ticklocs()#刻度位置列表
    axis.get_ticklabels()#标签列表
    [x.get_text() for x in axis.get_ticklabels()]#文本字符串
    more

    对数坐标图
    • semiology()#x轴为对数坐标
    • semiology()#y轴为对数坐标
    • loglog()# 两个轴都为对数坐标
      使用四种坐标图绘制低通滤波器的频率响应曲线,算术和三种对数坐标图:

    w = np.linspace(0.1,1000,1000)
    p =n np.abs(1/(1+0.1j*w))

    plt.subplot(221)
    plt.plot(w,p,linewidth=2)
    plt.ylim(0,1.5)

    plt.subplot(222)
    plt.semilogx(w,p,linewidth=2)
    plt.ylim(0,1.5)

    plt.subplot(223)
    plt.semilogy(w,p,linewidth=2)
    plt.ylim(0,1.5)

    plt.subplot(224)
    plt.loglog(w,p,linewidth=2)
    plt.ylim(0,1.5)

    plt.show()

    柱状图

    柱状图每根柱子长度表示大小,用来对比多组值。

    data = np.loadtxt("xxx.txt")
    width = (data[1,0]-data[0,0])*0.4
    plt.figure(figsize=(8,5))
    //让每根柱子左侧的横坐标为年纪减去柱子的宽度
    plt.bar(data[:,0]-width,data[:,1]/1e7, width, color='"b",label=u"男")

    plt.bar(data[:,0]-width,data[:,2]/1e7, width, color='"r",label=u"女")
    plt.xlim(0width,100)
    plt.xlabel(u"年龄")
    plt.ylabel(u"人口(千万)")
    plt.legend()

    plt.show()

    散列图
    • 以下方法无法单独指定每个点的颜色和大小:

    plt.plot(np.random.random(100), np.random.random(100),"o")
    plt.figure(figsize=(8,4))
    x = np.random.random(100)
    y = np.random.random(100)
    plt.scatter(x,y,s=x*1000,c=y,marker=(5,1),alpha=0.8,lw=2, facecolors="none")
    plt.xlim(0,1)
    plt.ylim(0,1)

    plt.show()

    scatter()函数前三个参数是数组

    • 前两个是x/y轴坐标
    • s是点的大小
    • c是每个点的颜色,默认的颜色映射表中蓝色对应最小值,红色最大值
    • marker设置点的形状,第一个参数是多边形的边数,第二个是其样式(0:多边形,1:星,2:放射形,3:圆形)
    • alpha设置点的透明度
    • lw 线宽
    • facecolors 参数为none时,表示散列点没有填充颜色
    饼图

    ply.pie()
    explode 将某部分弹出来,数据使用元组,数值的大小是分割出来的与其他两块的间隙
    labeldistance 文本的位置离原点有多远,1.1指1.1倍半径的位置
    autopct 圆里面的文本格式,%3.1f%%表示小数有三位,整数有一位的浮点数
    shadow 饼是否有阴影
    startangle 起始角度,0,表示从0开始逆时针转,为第一块。一般选择从90度开始比较好看
    pctdistance 百分比的text离圆心的距离

    极坐标图
    图像
    等值线图
    三维绘图

    酷炫Matplotlib
    more

    相关文章

      网友评论

        本文标题:绘图与可视化——Matplotlib

        本文链接:https://www.haomeiwen.com/subject/rcadlftx.html