Matplotlib自学指南

作者: Ucan先生 | 来源:发表于2018-03-11 16:43 被阅读0次

    欲善其事,先利其器 pycharm使用matplotlib

    1在pycharm中安装matplotlib
    file->setting->project matplotlib->project Interpreter
    1使用matplotlib库绘图,原理很简单,就是下面这5步:


    image.png

    2pycharm中正常显示图形界面
    在代码前面加上
    import matplotlib as mpl
    mpl.use('TkAgg')


    image.png

    2 常用图形示例

    绘制直线图

    示例1

    import matplotlib as mpl
    mpl.use('TkAgg')
    import matplotlib.pyplot as plt
    plt.plot([1,2,3,4])
    plt.ylabel('some numbers')
    plt.show()
    
    line1.png

    示例2

    #引入图形环境
    import matplotlib as mpl
    mpl.use('TkAgg')
    #引入画图类库
    import matplotlib.pyplot as plt
    #定义点 此处坐标问题 前一个列表表示x轴横坐标 后面一个表y轴纵坐标 前后对应 上例中未写则默认列表索引0,1,2,3,4,....顺序
    plt.plot([3,5,7,9],[1,2,3,4])
    #x标题
    plt.ylabel('x title')
    #y标题
    plt.xlabel('y title')
    #标题
    plt.title('title')
    plt.show()
    
    image.png

    点图

    示例

    #引入图形环境
    import matplotlib as mpl
    mpl.use('TkAgg')
    #引入画图类库
    import matplotlib.pyplot as plt
    #定义点 o代表点 b代表颜色blue r则代表颜色red
    plt.plot([3,5,7,9],[1,2,3,4],'bo')
    #x标题
    plt.ylabel('x title')
    #y标题
    plt.xlabel('y title')
    #标题
    plt.title('title')
    plt.show()
    
    image.png

    曲线图

    示例1
    f(x) = sin(x) 正弦函数曲线图 同理余弦函数图 f(x) = cos(x)

    #引入图形环境
    import matplotlib as mpl
    mpl.use('TkAgg')
    #引入画图类库
    import matplotlib.pyplot as plt
    #python中常用的数据类(常用于深度学习中,大数据中)
    import numpy as np
    #表示从0->5 之间间隔0.1生成列表
    x = np.arange(-3.2, 3.2, 0.1)
    #示例打印x查看数据结构
    print(x)
    #正弦公式 同理 y = np.cos(x) 切换余弦公式
    y = np.sin(x)
    plt.plot(x, y)
    plt.show()
    
    image.png

    示例2
    综合示例

    #引入图形环境
    import matplotlib as mpl
    mpl.use('TkAgg')
    #引入画图类库
    import matplotlib.pyplot as plt
    #python中常用的数据处理类(常用于深度学习中,大数据中)
    import numpy as np
    #表示从0->5 之间间隔0.1生成列表
    x = np.arange(-3.2, 3.2, 0.1)
    print(x)
    y = np.sin(x)
    plt.plot(x, y)
    
    #此处在sin(x) 上面 间隔 0.5画sin(x)的点
    m = np.arange(-3.2,3.2,0.5)
    n = np.sin(m)
    # bo表示蓝色小点,去掉则为直线
    plt.plot(m,n,'bo')
    
    #此处在话cox()x+0.2的直线
    z = np.cos(x)
    plt.plot(x,z)
    
    
    #取cos(x)上最大值进行标记
    #初始化列表x的第0项为最大值
    maxIndex = 0
    max = x[maxIndex]
    #对x进行循环 并计算出最大值的点以及索引位置
    for index in range(len(x)):
        b = np.cos(x[index])
        if(b>max):
            max = b
            maxIndex = index
    
    #计算最大值对应的横坐标值
    xVal = -3.2+0.1*maxIndex
    #画点
    plt.plot([xVal],max,'yo')
    
    
    plt.show()
    
    image.png

    示例3
    公式示例: 本例展现了ch(x) sh(x) th(x) 三个例子

    import math
    #引入图形环境
    import matplotlib as mpl
    mpl.use('TkAgg')
    #引入画图类库
    import matplotlib.pyplot as plt
    #python中常用的数据处理类(常用于深度学习中,大数据中)
    import numpy as np
    #定义双曲余弦 正弦 正切
    def ch(num):
        return (np.e**num + np.e**(-num))/2
    def sh(num):
        return (np.e**num - np.e**(-num))/2
    def th(num):
        return (np.e**num - np.e**(-num))/(np.e**num + np.e**(-num))
    xValues = np.arange(-10,10,0.1)
    zValues = np.arange(-10,10,1)
    
    #坐标轴的移动
    plt.axis()
    l=[-10,10,-10,10]
    plt.axis(l)
    plt.axhline()
    plt.axvline()
    plt.axhline(4)
    
    #根据公式计算纵坐标
    shValues = sh(xValues)
    chValues = ch(xValues)
    sValues = th(zValues)
    thValues = th(xValues)
    #画图
    plt.plot(xValues,thValues)
    plt.plot(xValues,shValues)
    plt.plot(xValues,chValues)
    plt.plot(zValues,sValues,'ro')
    plt.plot(xValues,xValues)
    plt.show()
    
    image.png

    饼图

    示例1

    import math
    #引入图形环境
    import matplotlib as mpl
    mpl.use('TkAgg')
    #引入画图类库
    import matplotlib.pyplot as plt
    #python中常用的数据处理类(常用于深度学习中,大数据中)
    import numpy as np
    
    #定义标签
    labels = 'A','B','C','D','E','F'
    #定义各部分组成
    fracs = [15.5,20.8,18.7,30.6,40,50]
    #定义偏离值
    explode = [0,0,0,0,0.1,0]
    #定义颜色
    #colors = ['red','blue','yellow','green','orange','#A9A9A9']
    plt.pie(x=fracs,explode=explode,labels=labels,shadow=True,labeldistance=1.2,startangle=30,autopct='%3.1f %%')
    plt.show()
    
    image.png

    柱状图

    示例1最简单的柱状图

    import math
    #引入图形环境
    import matplotlib as mpl
    mpl.use('TkAgg')
    #引入画图类库
    import matplotlib.pyplot as plt
    #python中常用的数据处理类(常用于深度学习中,大数据中)
    import numpy as np
    #定义数据
    data = [10,20,50,100,30,70]
    #bar(left, height, width=0.8, bottom=None) left为x轴方向值 height为y方向值 width为相对宽度
    plt.bar(range(len(data)),data,width=0.4)
    plt.show()
    
    image.png

    示例2 尝试改变横坐标值,底部高度,颜色

    import math
    #引入图形环境
    import matplotlib as mpl
    mpl.use('TkAgg')
    #引入画图类库
    import matplotlib.pyplot as plt
    #python中常用的数据处理类(常用于深度学习中,大数据中)
    import numpy as np
    #定义数据
    left = [1,4,6,9,12,14]
    data = [10,20,50,100,30,70]
    bottom = [5,10,15,20,25,30]
    #设置颜色
    color = ['red','blue','yellow','pink','purple','black']
    #bar(left, height, width, bottom) left为x轴方向值 height为y方向值 width为相对宽度 bottom为底部高度
    plt.bar(left,data,0.4,bottom,color=color)
    plt.show()
    
    image.png

    示例3 柱状图样式设置 边框样式|填充|填充颜色|填充样式

    import math
    #引入图形环境
    import matplotlib as mpl
    mpl.use('TkAgg')
    #引入画图类库
    import matplotlib.pyplot as plt
    #python中常用的数据处理类
    import numpy as np
    #定义数据
    left = [1,4,6,9,12,14]
    data = [10,20,50,100,30,70]
    bottom = [5,10,15,20,25,30]
    #设置颜色 可以不传或者只传一个值如 color = 'blue'
    color = ['red','blue','yellow','pink','purple','black']
    #bar(left, height, width, bottom) left为x轴方向值 height为y方向值 width为相对宽度 bottom为底部高度
    # ec代表填充的颜色 lw 表示边框粗细 hatch表示填充样式 ,可取值为: / , \ , | , - , + , x , o , O , . , *
    # ls表示linestyle即边框样式 风格有 -实线 --虚线 -.虚线和点结合 :点线
    plt.bar(left,data,1,bottom,color=color,ec = 'blue',lw=1,hatch='o',ls='-.')
    plt.show()
    
    image.png

    示例4 上下堆叠型

    #有中文出现的情况,需要u'内容'
    import math
    #引入图形环境
    import matplotlib as mpl
    mpl.use('TkAgg')
    #引入画图类库
    import matplotlib.pyplot as plt
    
    #coding:utf-8 解决中文不显示问题
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    
    #python中常用的数据处理类
    import numpy as np
    #定义数据
    size = 5
    num = 100
    x = np.arange(size)
    a = np.random.random(size)
    b = 1-a
    print(x)
    print(a)
    print(b)
    plt.bar(x,a*num,label='a',color='red')
    plt.bar(x,b*num,bottom=a*num,label='b',color='yellow')
    plt.xlabel(u'类别')
    plt.ylabel(u'数量')
    label=['x类别','y类别','z类别','a类别','b类别']
    #设置x轴标签
    plt.xticks(x, label, rotation=40)
    plt.legend()
    plt.show()
    
    image.png

    示例5 左右堆叠型

    # 有中文出现的情况,需要u'内容'
    import math
    # 引入图形环境
    import matplotlib as mpl
    
    mpl.use('TkAgg')
    # 引入画图类库
    import matplotlib.pyplot as plt
    
    # coding:utf-8 解决中文不显示问题
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    
    # python中常用的数据处理类
    import numpy as np
    
    # 定义数据
    size = 5
    num = 100
    x = np.arange(size)
    a = np.random.random(size)
    b = 1 - a
    print(x)
    print(a)
    print(b)
    #此处类似上线堆叠 移动左右一个宽度的位置
    plt.bar(x, a * num, width=0.2, label='a', color='red')
    plt.bar(x + 0.2, b * num, width=0.2, label='b', color='yellow')
    plt.xlabel(u'类别')
    plt.ylabel(u'数量')
    label = ['x类别', 'y类别', 'z类别', 'a类别', 'b类别']
    # 设置x轴标签
    plt.xticks(x, label, rotation=40)
    plt.legend()
    plt.show()
    
    image.png

    示例6

    # 有中文出现的情况,需要u'内容'
    import math
    # 引入图形环境
    import matplotlib as mpl
    
    mpl.use('TkAgg')
    # 引入画图类库
    import matplotlib.pyplot as plt
    
    # coding:utf-8 解决中文不显示问题
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    
    # python中常用的数据处理类
    import numpy as np
    
    # 定义数据
    a = np.array([50, 20, 100, 120, 70])
    b = np.array([70, 60, 50, 15, 52])
    
    #水平展示 类似bar用法
    plt.barh(range(len(a)), a)
    #注释b则仅仅显示单侧
    plt.barh(range(len(b)), -b)
    plt.show()
    
    
    image.png
    示例7 ❤

    (希望某人会看到)

    #引入图形环境
    import matplotlib as mpl
    mpl.use('TkAgg')
    #引入画图类库
    import matplotlib.pyplot as plt
    #python中常用的数据处理类(常用于深度学习中,大数据中)
    import numpy as np
    def x(t):
        return 2*np.cos(t)-np.cos(2*t)
    def y(t):
        return 5*np.sin(t)-np.sin(2*t)
    b = np.arange(-100,100,0.1)
    plt.plot(50*y(b),50*x(b),'r-')
    plt.show()
    
    image.png

    散点图

    示例1 f(x) = 2sin(x)+0.3x*x 做正态分布

    #引入图形环境
    #引入图形环境
    import matplotlib as mpl
    mpl.use('TkAgg')
    #引入画图类库
    import matplotlib.pyplot as plt
    #python中常用的数据处理类(常用于深度学习中,大数据中)
    import numpy as np
    # 通过rcParams设置全局横纵轴字体大小
    mpl.rcParams['xtick.labelsize'] = 24
    mpl.rcParams['ytick.labelsize'] = 24
    #定义方法 f(x) = 2*sin(x)*x^2
    def func(x):
        return 2*np.sin(x)+0.3*x**2
    
    #x轴方向上 (0,5)内采样100个点
    x = np.linspace(0,5,100)
    y = func(x)
    #在y的基础上进行以偏差最大为0.3做正态分布
    ydata = y+np.random.normal(scale=0.3,size=100)
    
    

    引入图形环境

    import matplotlib as mpl
    mpl.use('TkAgg')

    引入画图类库

    import matplotlib.pyplot as plt

    python中常用的数据处理类(常用于深度学习中,大数据中)

    import numpy as np

    在0,1取500分

    x = np.linspace(0, 1, 500)
    y = np.sin(4 * np.pi * x) * np.exp(-5 * x)
    y = y+np.random.normal(scale=0.01,size=500)

    子图

    fig, ax = plt.subplots()

    填充图

    ax.plot(x, y, '.')

    网格图

    ax.grid(True, zorder=5)
    plt.show()

    
    ![image.png](https://img.haomeiwen.com/i11026233/412149479eb80bab.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    #画图
    plt.figure('scatter')
    plt.plot(x,ydata,'.')
    plt.plot(x,y)
    plt.show()
    
    image.png

    填充图

    #引入图形环境
    import matplotlib as mpl
    mpl.use('TkAgg')
    #引入画图类库
    import matplotlib.pyplot as plt
    #python中常用的数据处理类(常用于深度学习中,大数据中)
    import numpy as np
    
    #在0,1取500分
    x = np.linspace(0, 1, 500)
    y = np.sin(4 * np.pi * x) * np.exp(-5 * x)
    #子图
    fig, ax = plt.subplots()
    
    #填充图
    ax.fill(x, y, zorder=10)
    #网格图
    ax.grid(True, zorder=5)
    plt.show()
    
    image.png
    #引入图形环境
    import matplotlib as mpl
    mpl.use('TkAgg')
    #引入画图类库
    import matplotlib.pyplot as plt
    #python中常用的数据处理类(常用于深度学习中,大数据中)
    import numpy as np
    
    #在0,1取500分
    x = np.linspace(0, 1, 500)
    y = np.sin(4 * np.pi * x) * np.exp(-5 * x)
    y = y+np.random.normal(scale=0.01,size=500)
    #子图
    fig, ax = plt.subplots()
    
    #填充图
    ax.plot(x, y, '.')
    #网格图
    ax.grid(True, zorder=5)
    plt.show()
    
    image.png

    相关文章

      网友评论

        本文标题:Matplotlib自学指南

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