zoukankan      html  css  js  c++  java
  • 读书笔记5基于matplotlib画图

    一、导入需要的模块

    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns
    import scipy.stats as stats

    二、画基本图形

    1、plot画图

    y=np.random.randn(100)
    plt.plot(y,'b-')
    plt.xlabel('x')
    plt.ylabel('y')
    plt.title(u'title')
    plt.show()

    可选参数如下所示:

    也可以通过更改参数来改变画图效果

    x=np.cumsum(np.random.rand(100))
    plt.plot(y,label='line label',color='r',linestyle='-',marker='o')
    plt.show()

    可选的参数有

    2、scatter画图,使用两个相同大小的一维数组产生。

    例如:数据服从正态分布,相关系数是0.5

    z=np.random.randn(100,2)
    z[:,1]=0.5*z[:,0]+np.sqrt(0.5)*z[:,1]
    x=z[:,0];
    y=z[:,1];
    plt.scatter(x,y);
    plt.show()

    参数也是可以修改的例如:

    z=np.random.randn(100,2)
    z[:,1]=0.5*z[:,0]+np.sqrt(0.5)*z[:,1]
    x=z[:,0];
    y=z[:,1];
    plt.scatter(x,y,marker='s',c='r');
    plt.show()

    3、画条形图bar,需要两个一位数组,第一个是横坐标,每个条形图的开始位置;纵坐标是条形图的高度

    y=np.random.rand(5);
    x=np.arange(5);
    plt.bar(x,y)
    plt.show()

    修改他的显示属性,可以使用一个颜色数组来指定每个条形图的颜色。

    y=np.random.rand(5);
    x=np.arange(5);
    colors=['#FF0000','#FFFF00','#00FF00','#00FFFF','#0000FF']
    plt.bar(x,y,width=0.5,color=colors,edgecolor='#000000',linewidth=5)
    plt.show()

    4、pie图表,使用一个一维数组来表示,不要求累加和是1,可以使人以大小的正数。

    x=np.arange(1,8);
    labels=['label1','label2','label3','label4','label5','label6','label7']
    plt.pie(x,labels=labels)
    plt.show()

    5、直方图hist,需要一个数组,bins参数表示将数据分成几组,默认是10组。

    x=np.random.randn(2000);
    plt.hist(x,bins=30);
    plt.show()

    如果想要生成累计直方图需要使参数cumulative为true

    x=np.random.randn(1000);
    plt.hist(x,bins=20,cumulative=True);
    plt.show()

    6、在同一个图上画出多张图表,需要首先使用figure()函数生成一个画板,画子图时需要使用sp=add_subplot(m,n,p)来表示子图。m表示行,n表示列,p表示第几个图。

    返回的是子图的句柄用于设置一些参数。最后要想显示出来需要使用draw()函数,将这些子图画在画板上,然后用show()函数显示出来。

    fig = plt.figure()
    ax = fig.add_subplot(2, 2, 1)
    y = np.random.randn(100)
    plt.plot(y);
    ax.set_title('1')
    
    y = np.random.rand(5)
    x = np.arange(5)
    ax = fig.add_subplot(2, 2, 2)
    plt.bar(x, y)
    ax.set_title('2');
    
    y = np.random.rand(5)
    y = y / np.sum(y)
    y[y < .05] = .05
    ax = fig.add_subplot(2, 2, 3)
    plt.pie(y)
    ax.set_title('3')
    
    plt.draw()
    plt.show()

     7、3D画图

    (1)画线,使用plot,需要Axed3D(fig)来画出3D轴线,

    import copy
    from mpl_toolkits.mplot3d import Axes3D
    x=np.linspace(0,6*np.pi,600);
    z=copy.copy(x)
    x=np.cos(z)
    y=np.sin(z);
    fig=plt.figure()
    ax = Axes3D(fig)
    ax.plot(x,y,zs=z)
    plt.xlabel('x')
    plt.ylabel('y')
    ax.view_init(15,45)
    plt.draw()
    plt.show()

    8、保存图像,使用savefig(’filename.ext’) ,其中ext支持png, pdf, ps, eps or svg格式。

    import copy
    from mpl_toolkits.mplot3d import Axes3D
    x=np.linspace(0,6*np.pi,600);
    z=copy.copy(x)
    x=np.cos(z)
    y=np.sin(z);
    fig=plt.figure()
    ax = Axes3D(fig)
    ax.plot(x,y,zs=z)
    plt.xlabel('x')
    plt.ylabel('y')
    ax.view_init(15,45)
    plt.savefig('3dplot.png')
    plt.draw()
    plt.show()
  • 相关阅读:
    C语言版本:单链表的实现(优化版本)
    C语言版本:单链表的实现
    C语言版本:顺序表的实现
    C++:多态浅析
    C++:同名隐藏和赋值兼容规则
    C++:钻石继承与虚继承
    C++:派生类的构造函数和析构函数的调用顺序
    Docker安装和使用
    Node10.15.0的安装
    碎碎叨叨
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/5406326.html
Copyright © 2011-2022 走看看