zoukankan      html  css  js  c++  java
  • Matplotlib模块:绘图和可视化

    Matplotlib简介

    Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。

    导入库

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from pandas import Series,DataFrame
    #内嵌画图
    %matplotlib inline
    #绘图时可以显示中文
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus']=False

    常用方法

    设置图像标题:plt.title()
    设置x轴名称:plt.xlabel()
    设置y轴名称:plt.ylabel()
    设置x轴范围:plt.xlim()
    设置y轴范围:plt.ylim()
    设置x轴刻度:plt.xticks()
    设置y轴刻度:plt.yticks()
    设置曲线图例:plt.legend()

    画布与子图

    画布:figure
    
    fig = plt.figure()
    图:subplot
    
    ax1 = fig.add_subplot(2,2,1)
    调节子图间距:
    
    subplots_adjust(left, bottom, right, top, wspace, hspace)
    
    plt.figure(figsize=(6,8))
    表示figure 的大小为宽、长(单位为inch)
    plt.subplot(121)
    表示整个figure分成1行2列,共2个子图,这里子图在第一行第一列
    plt.subplot(122)
    表示子图在第一行第二列

    画折线图

    图一

    plot函数:绘制折线图
    
    线型linestyle(-,-.,--,..)
    点型marker(v,^,s,*,H,+,x,D,o,…)
    颜色color(b,g,r,y,k,w,…)
    
    plt.plot([1,2,3,4],[2,3,1,8],color="red",linestyle="--",marker="*" ,label='lineA') # 画折线()
    plt.plot([1,2,3,4],[2,4,6,9],color="blue",linestyle="-",marker="o" ,label='lineB')
    plt.title('matplotlib Test')
    plt.xlabel('XLabel')
    plt.ylabel('YLabel')
    plt.xlim(0,6) # x轴刻度范围
    plt.ylim(0,10) # y轴刻度范围
    plt.xticks(np.arange(0,7,2))
    plt.legend()

     常用参数

     

        线条方式

      点型

    图二

    fig = plt.figure()
    ax1 = fig.add_subplot(1,2,1) 
    #参数一:子图总行数,子图总列数,子图位置
    ax1.plot([1,2,3,4],[7,9,10,8],label='ax1')
    ax2 = fig.add_subplot(1,2,2)
    ax2.plot([1,2,3,4],[2,4,6,8],label='ax2')
    ax1.legend()
    ax2.legend()
    plt.show()

     图三

    x=np.linspace(-3,3,50) #在(-3,3)之间生成50个样本数
    y1=2*x+1
    y2=x**2
    plt.figure(num=1,figsize=(10,5)) #定义编号为1,大小为(10,5)
    plt.plot(x,y1,color='red',linewidth=2,linestyle='--')   #颜色线宽及格式
    plt.plot(x,y2)
    plt.xlim(-1,2) #x轴的范围
    plt.ylim(-2,3) #y轴的范围
    plt.xlabel("x轴")
    plt.ylabel("y轴")
    plt.show()

     移动坐标轴

    x=np.linspace(-3,3,50) #在(-3,3)之间生成50个样本数
    y1=2*x+1
    y2=x**2
    plt.figure(num=2,figsize=(8,5)) #定义编号为2,大小为(8,5)
    plt.plot(x,y1,color='red',linewidth=2,linestyle='--')  
    plt.plot(x,y2)
    plt.xlim(-1,2) #x轴的范围
    plt.ylim(-2,3) #y轴的范围
    plt.xlabel("x轴")
    plt.ylabel("y轴")
    
    new_ticks=np.linspace(-1,2,5)  #-1到2分成5段,包含端点
    print(new_ticks)
    plt.xticks(new_ticks)  #进行替换新下标
    plt.yticks([-2,-1,0,1,2,],
              [r'$really bad$','$bad$','$0$','$well$','$really well$'])
    
    
    ax=plt.gca()  #get current axis
    ax.spines['right'].set_color('none') #边框属性设置为None 不显示
    ax.spines['top'].set_color('none')
    
    
    ax.xaxis.set_ticks_position('bottom')  #设置x坐标刻度数字或名称的位置,所有属性为:top,bottom,both,default,none
    ax.spines['bottom'].set_position(('data',0)) # 设置.spines边框x轴,设置.set_position设置边框的位置,y=0位置;位置所有属性有outward,axes,data
    ax.yaxis.set_ticks_position('left')
    ax.spines['left'].set_position(('data',0)) #坐标中心点在(0,0)位置

     图例变化

    x=np.linspace(-3,3,50)
    y1=2*x+1
    y2=x**2
    plt.figure(num=2,figsize=(8,5))
    plt.xlim(-1,2)
    plt.ylim(-2,3)
    
    new_ticks=np.linspace(-1,2,5) 
    plt.xticks(new_ticks)
    plt.yticks([-2,-1,1,2,],
              [r'$really bad$','$bad$','$well$','$really well$'])
    
    l1,=plt.plot(x,y1,color='red',linewidth=2,linestyle='--',label='linear line')
    l2,=plt.plot(x,y2,label='square line') 
    
    #单独修改label的信息
    plt.legend(loc='upper left',handles=[l1,l2],labels=['up','down']) #显示在左上位置
    
    
    plt.show() #显示图
    
    #loc参数
    best  
    upper right  
    upper left  
    lower left  
    lower right  
    right  
    center right  
    lower center  
    upper center  
    center

    bar图

    data=[20,30,40,50]
    labels=['Jan','Feb','Mar','Apr']
    plt.bar(np.arange(len(data)),data,width=.3)
    plt.xticks(np.arange(len(data)),labels)
    plt.show()

    import numpy as np
    import matplotlib.pyplot as plt
    
    # 数据
    N = 5
    x = [20, 10, 30, 25, 15]
    y = np.arange(N)
    
    # 绘图 y= y轴, left= 水平条的底部, height 水平条的宽度, width 水平条的长度
    p1 = plt.barh(y, left=0, height=0.5, width=x)
    
    # 展示图形
    plt.show()

    N = 5
    y = [20, 10, 30, 45, 15]
    x = np.arange(N)
    # 添加地名坐标
    str1 = ("北京", "上海", "武汉", "深圳", "重庆")
    plt.figure(num=2,figsize=(10,5)) #定义编号为2,大小为(8,5)
    
    # 绘图 x x轴, height 高度, 默认:color="blue", width=0.8
    p1 = plt.bar(x, height=y, width=0.5, label="城市指标", tick_label=str1)
    
    # 添加数据标签
    for a, b in zip(x, y):
        plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=11)
    
    # 添加图例
    plt.legend()
    
    # 展示图形
    plt.show()

     pie图

    plt.pie([10,20,30],labels=['x','y','z'],autopct='%.2f%%',explode=[0.1,0,0.1])
    plt.axis('equal')
    plt.show()

  • 相关阅读:
    1014 Waiting in Line (30)(30 point(s))
    1013 Battle Over Cities (25)(25 point(s))
    1012 The Best Rank (25)(25 point(s))
    1011 World Cup Betting (20)(20 point(s))
    1010 Radix (25)(25 point(s))
    1009 Product of Polynomials (25)(25 point(s))
    1008 Elevator (20)(20 point(s))
    1007 Maximum Subsequence Sum (25)(25 point(s))
    1006 Sign In and Sign Out (25)(25 point(s))
    1005 Spell It Right (20)(20 point(s))
  • 原文地址:https://www.cnblogs.com/xiao-apple36/p/11551102.html
Copyright © 2011-2022 走看看