美文网首页
matplotlib绘图基础1:直接plt绘图常用命令

matplotlib绘图基础1:直接plt绘图常用命令

作者: 一起学分析 | 来源:发表于2017-11-16 19:59 被阅读211次

    matplotlib的绘图功能据传是参照MATLAB而来,是Python最基础也是最强大的,可惜对于我这样不了解MATLAB也不懂程序开发的人来说理解起来颇为困难。

    matplotlib绘图基础系列将试图梳理一下matplotlib的绘图细节。不一定准确,仅供参考。

    1、Python的绘图体系

    首先来看一张图,图片来源:lemonbit

    Python可视化体系
    可见,由matplotlib和JavaScript衍生出许多可用的优秀绘图包。pandas、seaborn、bokeh对日常工作图表党较为常用,当然还有最近发布的pycharts也是不错的绘图工具。

    2、matplotlib的总体结构

    理论上,matplotlib绘图是这样的结构,来源Chris_Chen

    matplotlib的总体结构
    上面图的意思是,在pyplot下,我们定义一个画布叫fig(fig=plt.figure())。fig下可以定义多个axes(plt.subplots()等方法),即一张画布上划分多个小图。然后对每个小图设置xy轴、标题、数据展示等等。理论上如此,但实际操作起来比较不便,总给人一种缺少一本手册的感觉。

    3、直接使用plt绘图的参数

    废话少说,直接上代码

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-3, 3, 50)
    y = 2*np.cos(x)**4 + 5*np.sin(x)**3
    
    #设置画布编号,大小,画布颜色
    plt.figure(num=1, figsize=(8, 5),facecolor='#eeeeff')
    #绘制数据(line1,和line2,是为了便于后面使用legend添加的,注意,必须添加逗号。
    line1,=plt.plot(x, y,label='line1')
    line2,=plt.plot(x,y*y,label='line2')
    #定义xy轴标题,字体大小,旋转角度
    plt.ylabel('This is Y',fontsize=14)
    plt.xlabel('This is X',fontsize=14,rotation=0)
    #定义图表所有轴的范围,顺序依次为xmin,xmax,ymin,ymax
    plt.axis([-4,4,-6,6])
    #定义标题
    plt.title('This is big 标题',fontsize=25,color='#3546ff')
    #在某个位置添加文本,是xy轴对应的位置
    plt.text(0,8,'这是波谷哇')
    #如果需要对典型值进行标记,如需标记x=[-3,-2,-1,0,1,2,3]对应的y值,则需要使用循环依次添加
    x1=[-3,-2,-1,0,1,2,3]
    y1=[2*np.cos(i)**4 + 5*np.sin(i)**3 for i in x1]
    for a,b in zip(x1,y1):
        plt.text(a,b+0.05,'%.1f' % b,ha='center',va='bottom',fontsize=10,color='g',bbox=dict(facecolor='g',alpha=0.2))
    #添加网格线
    plt.grid(True,alpha=0.1,color='#ff0000',linewidth=1)
    #重新定义y轴的范围,这里会将plt.axis定义的y轴范围覆盖
    plt.ylim(-10,30)
    #添加带箭头的文本
    plt.annotate(r'$2*np.cos(x)**4+5*np.sin(x)**3$',xy=(1.5,25),xycoords='data',xytext=(+0.2,0.1),arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.2"))
    #添加图例,如果这里不加labels,则默认为line1,定义的label,即labels可以更改默认图例
    plt.legend(loc='best',handles=[line1,line2],labels=['label3','label2'])
    #重设X轴标签,想放多少个就设置多少个
    #plt.xticks([-4,-3,-2,-1,0,1,2,3,4],list('ABCDEFGHI'),size='medium',rotation=0)
    plt.xticks([-4,-2,0,2,4],list('ABCDE'),size='medium',rotation=0)
    #自动优化图表,没有也没关系
    plt.tight_layout()
    
    plt.show()
    

    结果就是这样了,基本上可以满足大部分的图表自定义调整。


    plt直接绘图的结果

    相关文章

      网友评论

          本文标题:matplotlib绘图基础1:直接plt绘图常用命令

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