zoukankan      html  css  js  c++  java
  • Python3.0科学计算学习之绘图(一)

    1. 基本绘图:

    (1)  plot是标准的绘图库,调用函数plot(x,y)就可以创建一个带有绘图的图形窗口(其中y是x的函数)。输入的参数为具有相同长度的数组(或列表);或者plot(y)是plot(range(len(y)),y)的简写。

    1python实现使用200个采样点来绘制sin(x),并且每隔四个点的位置设置标记。

    import numpy as np

    import matplotlib.pyplot as plt

    plt.rcParams['font.sans-serif']=['simhei']         #指定默认字体(因为matplotlib默认为英文字体,汉字会使其乱码)

    plt.rcParams['axes.unicode_minus']=False    #可显示‘-’负号

    x=np.linspace(-2*np.pi,2*np.pi,200)     #先设定x的取值范围,从-2n2n

    samples=x[::4]

    plt.plot(samples,np.sin(samples),color='red',marker='*')

    plt.title('sin(x)函数及一些绘制的点')

    plt.grid(color='black',linestyle='--',alpha=0.3)

    plt.show()

    #实现结果图:

                  

    表明:标准图是一条实线曲线,每个轴都会自动缩放来适应坐标值,但也可以手动进行设置。多次调用plot函数将会在同一窗口中叠加绘图。

    (2) python3.0曲线拟合(polyfit,polyval

    利用numpy自带的polyfit polyval 函数进行回归分析,polyfit 表示多项式曲线拟合、polyval 表示多项式曲线求值。

    Z1=np.polyfit(x,y,3)    #拟合,自由度为33为多项式最高次幂,结果为多项式的各个系数;最高系数为3,得到4个系数从最高到最低排列;最高次幂取几要视情况而定。

    P1=np.ploy1d(z1)   #将系数带入方程,得到函数式p1

    Y=np.polyval(p,x)  #计算多项式的函数值。返回在x处多项式的值,p为多项式系数,元素按多项式降幂排序

    实例2. 将多项式拟合为一系列的点

    import numpy as np

    import matplotlib.pyplot as plt

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

    plt.rcParams['axes.unicode_minus']=False

    x=np.arange(5)

    y=[1,2,1,3,5]

    p2=np.polyfit(x,y,2)        

    p4=np.polyfit(x,y,4)

    xx=np.linspace(-1,5,200)

    plt.plot(xx,np.polyval(p2,xx),label='二次多项式拟合')        #绘制曲线

    plt.plot(xx,np.polyval(p4,xx),label='四次多项式插值拟合')

    plt.plot(x,y,'*')       #原曲线

    plt.axis([-1,5,0,6])     #axis([xmin,xmax,ymin,ymax]) 来手动设置坐标轴的范围

    plt.legend(loc='upper left',fontsize='small')    #legend()函数生成图例,添加标签来解释多重绘图,该处设置是将图例放在左上角并用小字号排版。

    plt.show()

    #结果图为:

                

    2.. 二维散点图

    代码如下:

    import numpy as np

    import matplotlib.pyplot as plt

    x1=2*np.random.standard_normal((2,100))

    x2=0.8*np.random.standard_normal((2,100))+np.array([[6],[2]])   #加二维数组

    散点不重叠在一起

    plt.plot(x1[0],x1[1],'g*')

    plt.plot(x2[0],x2[1],'r*')

    plt.title('2D散点图')

    plt.show()    #结果图为:

                                         

    3. 对数图形绘制:

    使用loglog函数即plt.loglog(x,y)

    import numpy as np

    import matplotlib.pyplot as plt

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

    plt.rcParams['axes.unicode_minus']=False

    x=np.linspace(0,10,200)

    plt.loglog(x,2*x*2,label='二次多项式',linestyle='--',linewidth=3)

    plt.loglog(x,4*x*4,label='四次多项式',linestyle='-.',linewidth=3)

    plt.loglog(x,5*np.exp(x),label='指数次多项式',linewidth=3)

    plt.title('对数图')

    #plt.axis([10*-2,10*2,10*-5,10*6])  #???思考遗留问题:如何调整指数函数xy轴的范围

    plt.legend(loc='best')

    plt.show()

                          

    4. 绘图格式化

    (1) 常见的绘图格式参数:

     linestyle用于设置线条样式,其中描述solid 表字符串’-’(实线)dashed表‘--’(虚线),dashed dotted表‘- ,’dotted表‘:’。

     color用于设置绘图的颜色,其中有描述blue(字符串用b),green(字符串用g),red(字符串用r),cyan青色(字符串表c),magenta洋红(字符串表m),yellowblackwhite(字符串表ybw

    Marker对图形坐标点标记,其中字符串参数(描述)分别为:.(point) ,(pixel)、。(circle)*(star)d,D(thin diamond,diamond)

    注意:格式化命令可以使用短字符串语法格式:例如,plt.plot(x,’go’)

    实例:迭代计算出了正弦曲线上噪点的平均值

    import numpy as np

    import matplotlib.pyplot as plt

    def avg(x):                          #函数avg使用roll调用来移动数组中所有的值。

        """simple running average"""

        return(np.roll(x,1)+x+np.roll(x,-1)) #np.roll(x,2)是循环移位函数,表示向右循环移位2

    x=np.linspace(-2*np.pi,2*np.pi,200)

    y=np.sin(x)+0.4*np.random.rand(200)

    for iteration in range(3):

        plt.subplot(3,1,iteration+1)    使用subplot命令将多个绘图放置于一个图形窗口中

        plt.plot(x,y,label='{:d} average{}'.format(iteration,'s' if iteration> 1 else''))

        plt.yticks([])

        plt.legend(loc='lower left',frameon=False)

        y=avg(y)

    plt.subplots_adjust(hspace=0.7)   #在同一个图形窗口中进行多次绘图的实例图

                                                                            

    (2) savefig命令,允许用户将图形保存为图像格式,该命令支持多种图像和文件格式,可用文件扩展名指定:plt.savefig('test.pdf')

    为将图像放在非白色的背景上,可设置transparent参数使得图片背景透明  plt.savefig('test.pdf',transparent=True)  

    plt.savefig('test.pdf',bbox_inches='tight')  #如果要将图形嵌入LaTeX文档中,为减少周围的空白区域,建议通过在图纸周围设置图形的边框

  • 相关阅读:
    Linux数据库还原备份
    loadrunner遇到的问题
    Maven基础入门与核心知识
    数据去中心化的场景与流程
    设计模式:灵活编程(观察者模式)
    使用Mycat构建MySQL读写分离、主从复制、主从高可用
    设计模式:灵活编程(装饰模式)
    设计模式:灵活编程(组合模式)
    Laravel5:重定向 redirect 函数的详细使用
    设计模式:对象生成(单例、工厂、抽象工厂)
  • 原文地址:https://www.cnblogs.com/chenzhijuan-324/p/10660170.html
Copyright © 2011-2022 走看看