美文网首页
matplotlib教程

matplotlib教程

作者: kuppo | 来源:发表于2017-12-01 13:56 被阅读16次

    有的时候我们想知道我们所处理的数据是如何分布的,在计算的时候又是如何变化的.仅靠打印很难有直观的感受.最好的办法就是用图像把数据表达出来.
    本文介绍一下phthon中常用画图模块matplotlib的基本用法,相当于matlab

    曲线图

    Figure_1.png
    # 构造数据
    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(-3, 3, 50)
    y1 = x ** 2 + 1
    y2 = 2 * x + 1
    
    # 画图
    plt.plot(x, y2,label='2 * x + 1')
    plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--',label='x ** 2 + 1')
    # 显示标注
    plt.legend()
    
    plt.show()
    

    散点图

    Figure_2.png
    import matplotlib.pyplot as plt
    import numpy as np
    
    # 散点图
    x = np.random.normal(0, 1, 1024)
    y = np.random.normal(0, 1, 1024)
    # 随机颜色
    T = np.arctan2(x, y)
    
    plt.scatter(x, y, s=75, c=T, alpha=0.5)
    
    # 设置横纵坐标轴展示范围
    plt.xlim((-1.5,1.5))
    plt.ylim((-1.5,1.5))
    
    # 隐藏横纵坐标轴
    plt.xticks(())
    plt.yticks(())
    
    plt.show()
    
    

    直方图

    Figure_4.png
    import matplotlib.pyplot as plt
    import numpy as np
    
    ##  直方图。。。。
    
    ## 生成数据
    n = 12
    X = np.arange(n)
    Y1 =  np.random.uniform(0.5,1.0,n)
    Y2 =  np.random.uniform(0.5,1.0,n)
    
    #  画图
    plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
    plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
    
    ## 标注数值
    for x,y in zip(X,Y1):
        plt.text(x+0.4, y+0.05, '%.2f' % y, ha='center', va= 'bottom')
    
    # 设置y轴展示范围
    plt.ylim(-1.25,+1.25)
    plt.show()
    

    饼状图

    Figure_1-1.png
    import matplotlib.pyplot as plt
    
    #调节图形大小,宽,高
    plt.figure(figsize=(6,9))
    #定义饼状图的标签,标签是列表
    labels = [u'one',u'two',u'three']
    #每个标签占多大,会自动去算百分比
    sizes = [60,30,10]
    colors = ['red','yellowgreen','lightskyblue']
    #将某部分爆炸出来, 使用括号,将第一块分割出来,数值的大小是分割出来的与其他两块的间隙
    explode = (0.05,0,0)
    
    patches,l_text,p_text = plt.pie(sizes,explode=explode,labels=labels,colors=colors,
                                    labeldistance = 1.1,autopct = '%3.1f%%',shadow = False,
                                    startangle = 90,pctdistance = 0.6)
    
    #labeldistance,文本的位置离远点有多远,1.1指1.1倍半径的位置
    #autopct,圆里面的文本格式,%3.1f%%表示小数有三位,整数有一位的浮点数
    #shadow,饼是否有阴影
    #startangle,起始角度,0,表示从0开始逆时针转,为第一块。一般选择从90度开始比较好看
    #pctdistance,百分比的text离圆心的距离
    #patches, l_texts, p_texts,为了得到饼图的返回值,p_texts饼图内部文本的,l_texts饼图外label的文本
    
    #改变文本的大小
    #方法是把每一个text遍历。调用set_size方法设置它的属性
    for t in l_text:
        t.set_size=(30)
    for t in p_text:
        t.set_size=(20)
    # 设置x,y轴刻度一致,这样饼图才能是圆的
    plt.axis('equal')
    plt.legend()
    plt.show()
    
    

    手写图

    这个就是好看用的了,嘿嘿


    Figure_6.png
    import numpy as np
    import matplotlib.pyplot as plt
    
    eqs = []
    eqs.append((r"$W^{3\beta}_{\delta_1 \rho_1 \sigma_2} = U^{3\beta}_{\delta_1 \rho_1} + \frac{1}{8 \pi 2} \int^{\alpha_2}_{\alpha_2} d \alpha^\prime_2 \left[\frac{ U^{2\beta}_{\delta_1 \rho_1} - \alpha^\prime_2U^{1\beta}_{\rho_1 \sigma_2} }{U^{0\beta}_{\rho_1 \sigma_2}}\right]$"))
    eqs.append((r"$\frac{d\rho}{d t} + \rho \vec{v}\cdot\nabla\vec{v} = -\nabla p + \mu\nabla^2 \vec{v} + \rho \vec{g}$"))
    eqs.append((r"$\int_{-\infty}^\infty e^{-x^2}dx=\sqrt{\pi}$"))
    eqs.append((r"$E = mc^2 = \sqrt{{m_0}^2c^4 + p^2c^2}$"))
    eqs.append((r"$F_G = G\frac{m_1m_2}{r^2}$"))
    
    
    plt.axes([0.025,0.025,0.95,0.95])
    
    for i in range(24):
        index = np.random.randint(0,len(eqs))
        eq = eqs[index]
        size = np.random.uniform(12,32)
        x,y = np.random.uniform(0,1,2)
        alpha = np.random.uniform(0.25,.75)
        plt.text(x, y, eq, ha='center', va='center', color="#11557c", alpha=alpha,
                 transform=plt.gca().transAxes, fontsize=size, clip_on=True)
    
    plt.xticks([]), plt.yticks([])
    # savefig('../figures/text_ex.png',dpi=48)
    plt.show()
    

    本文链接:https://www.kupposhadow.com/post/5a1fd8dbe717c543d753e7d6
    本站采用「署名 4.0 国际(CC BY 4.0)」创作共享协议。只要在使用时署名,那么使用者可以对本站所有原创内容进行转载、二次创作、商业性使用。

    相关文章

      网友评论

          本文标题:matplotlib教程

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