python 爬虫数据分析与展示笔记(二)

python 爬虫数据分析与展示笔记(二)

【Python数据分析与展示】.MOOC. 北京理工大学

  • Matplotlib

    • import matplotlib.pyplot as plt(引入模块的别名)

    • 代码示例:

      import matplotlib.pyplot as plt
      plt.plot([0,2,4,6,8],[3,1,4,5,2])
      plt.ylabel("grade") #y轴增加标签:grade
      plt.axis([-1,10,0,6]) #-1表示x轴的起始是-1,10表示x轴的终点是10
      plt.savefig('test',dpi=600) #保存图片为text,600像素点
      plt.show() #展示绘图结果
      
    • pyplot的绘图区域plt.subplot(nrows,ncols,plot_number)

      • nrows:numberofrows(行),ncols:numberofcolumns(列),plot_number:区域编号

      • 实例:

        import numpy as np
        import matplotlib.pyplot as plt
        
        def f(t): #能量衰减函数
            return np.exp(-t) * np.cos(2*np.pi*t)
        
        a = np.arange(0.0,5.0,0.02)
        
        plt.subplot(211) #将绘图区域分为两行一列并选中第一块
        plt.plot(a,f(a)) #在该区域绘制a对应的f(a)衰减函数
        
        plt.subplot(2,1,2) #subplot选中子绘图区
        plt.plot(a,np.cos(2*np.pi*a),'r--') #r--表示虚线
        plt.show()
        
      • pyplot的plot()函数

        • plt.plot(x,y,format_string,**kwargs)

          • x:x轴数据,列表或数组,可选 (注:当绘制多条曲线时,各条曲线的x不能省略)

          • y:y轴数据,列表或数组

          • format_string:控制曲线的格式字符串,可选(由颜色字符风格字符标记字符组成)

            • 颜色字符

              颜色字符说明颜色字符说明
              b蓝色m洋红色magenta
              g绿色y黄色
              r红色k黑色
              c青绿色cyanw白色
              #008000RGB某颜色0.8灰度值字符串
            • 风格字符

              风格字符说明
              ‘-’实线
              ‘–’破折线
              ‘-.’点划线
              ‘:’虚线
              ’ ‘’ ’无线条
            • 标记字符

              标记字符说明标记字符说明标记字符说明
              ‘.’点标记‘1’下花三角标记‘h’竖六边形标记
              ‘,’像素标记(极小点)‘2’上花三角标记‘H’横六边形标记
              ‘o’实心圈标记‘3’左花三角标记‘+’十字标记
              ‘v’倒三角标记‘4’右花三角标记‘x’x标记
              ‘^’上三角标记‘s’实心方形标记‘D’菱形标记
              ‘>’右三角标记‘p’实心五角标记‘d’瘦菱形标记
              ‘<’左三角标记‘*’星形标记‘|’垂直线标记
            • 例:

              import matplotlib.pyplot as plt
              import numpy as np
              
              a = np.arange(10)
              plt.plot(a,a*1.5,'go-') #斜率1.5,g绿色,o实心圈,-实线
              plt.show()
              
          • ** kwargs:第二组或更多(x,y,format_string)

            • color:控制颜色,color=‘green’
            • linestyle:线条风格,linestyle=‘dashed’
            • marker:标记风格,marker=‘o’
            • markerfacecolor:标记颜色,markerfacecolor=‘blue’
            • markersize:标记尺寸,markersize=20
        • pyplot的中文显示:

          • 方法一:rcParams修改字体实现 (pyplot不默认支持中文显示)

            属性说明
            ‘font.family’用于显示字体的名字
            ‘font.style’字体风格,正常’normal’或斜体’italic’
            ‘font.size’字体大小,整数字号或者’large’、‘x-small’
            中文字体说明
            ‘SimHei’中文黑体
            ‘Kaiti’中文楷体
            ‘LiSu’中文隶书
            ‘FangSong’中文仿宋
            ‘YouYuan’中文幼圆
            ‘STSong’华文宋体

            例:(绘制余弦波)

            import numpy as np
            import matplotlib.pyplot as plt
            import matplotlib
            
            matplotlib.rcParams['font.family'] = 'STSong'
            matplotlib.rcParams['font.size'] = 20
            
            a = np.arange(0.0,5.0,0.02)
            
            plt.xlabel('横轴:时间')
            plt.ylabel('纵轴:振幅')
            plt.plot(a,np.cos(2*np.pi*a),'r--')
            plt.show()
            
          • 方法二:在有中文输出的地方,增加一个属性 fontproperties

          • 例:

            import numpy as np 
            import matplotlib.pyplot as plt
            
            a = np.arange(0.0,5.0,0.02)
            
            plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=20)
            plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=20)
            plt.plot(a,np.cos(2*np.pi*a),'r--')
            plt.show()
            
        • pyplot的文本显示

          函数说明
          plt.xlabel()对X轴增加文本标签
          plt.ylabel()对Y轴增加文本标签
          plt.title()对图形整体增加文本标签
          plt.text()在任意位置增加文本
          plt.annotate()在图形中增加带箭头的注释
        • 例:

          import numpy as np
          import matplotlib.pyplot as plt
          
          a = np.arange(0.0,5.0,0.02) #生成一个数组a
          plt.plot(a,np.cos(2*np.pi*a),'r--') #绘制图像
          
          #坐标系的文本显示部分
          plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=15,color='green')
          plt.xlabel('纵轴:振幅',fontproperties='SimHei',fontsize=15)
          plt.title(r'正弦波实例 $y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25) #一对美元符号框起来的是LaTex公式的标志
          plt.text(2,1,r'$\mu=100$',fontsize=15) #前两个参数表示横轴和纵轴坐标
          
          plt.axis([-1,6,-2,2]) #axis()函数确定横纵坐标范围,横坐标(-1~6),纵坐标(-2~2)
          plt.grid(True) #调用grid()函数,为True表示加入网格曲线
          plt.show() #显示图像
          
        • 增加注释:plt.annotate(s,xy=arrow_crd,xytext=text_crd,arrowprops=dict)

          • s:一个字符串,表示要注释的内容

          • xy=arrow_crd:箭头所在位置的坐标

          • xytext=text_crd:注释文本所在的坐标

          • arrowprops=dict:用字典对箭头属性定义

          • 例:

            import numpy as np
            import matplotlib.pyplot as plt
            
            a = np.arange(0.0,5.0,0.02)
            plt.plot(a,np.cos(2*np.pi*a),'r--')
            
            plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=15,color='green')
            plt.xlabel('纵轴:振幅',fontproperties='SimHei',fontsize=15)
            plt.title(r'正弦波实例 $y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25)
            
            #添加了一个箭头
            plt.annotate(r'$\mu=100$',xy=(2,1),xytext=(3,1.5),arrowprops=dict(facecolor='black',shrink=0.1,width=2))#facecolor定义箭头颜色,shrink使箭头的头尾与所指内容和文本保留空白,width定义箭头宽度
            
            plt.axis([-1,6,-2,2])
            plt.grid(True)
            plt.show()
            
      • pyplot的子绘图区域

        • plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)

        • 例:

          plt.subplot2grid((3,3),(0,0),colspan=3)
          plt.subplot2grid((3,3),(1,0),colspan=2)
          plt.subplot2grid((3,3),(1,2),colspan=2)
          plt.subplot2grid((3,3),(2,0))
          plt.subplot2grid((3,3),(2,1))
          

          (个人理解,画的草图)在这里插入图片描述

        • GridSpec类

        • 例:

          import matplotlib.pyplot as plt
          import matplotlib.gridspec as gridspec
          
          gs = gridspec.GridSpec(3,3)
          
          ax1 = plt.subplot(gs[0,:])
          ax2 = plt.subplot(gs[1,:-1])
          ax3 = plt.subplot(gs[1:,-1])
          ax4 = plt.subplot(gs[2,0])
          ax5 = plt.subplot(gs[2,1])
          

! 这里不是很理解[1,:-1]和[1:,-1],等弄懂了回来补充

  • pyplot的基础图表函数

    函数说明
    plt.plot(x,y,fmt,…)绘制一个坐标图
    plt.boxplot(data,notch,position)绘制一个箱形图
    plt.bar(left,height,width,bottom)绘制一个条形图
    plt.barh(width,bottom,left,height)绘制一个横向条形图
    plt.polar(theta,r)绘制一个极坐标图
    plt.pie(data,wxplode)绘制饼图
    plt.psd(x,NFFT=256,pad_to,Fs)绘制功率谱密度图
    plt.specgram(x,NFFT=256,pad_to,F)绘制谱图
    plt.cohere(x,y,NFFT=256,Fs)绘制X-Y的相关性函数
    plt.scatter(x,y)绘制散点图,其中,x和y长度相同
    plt.step(x,y,where)绘制步阶图
    plt.hist(x,bins,normed)绘制直方图
    plt.contour(X,Y,Z,N)绘制等值图
    plt.vlines()绘制垂直图
    plt.stem(x,y,linefmt,markerfmt)绘制柴火图
    plt.plot_date()绘制数据日期
    • pyplot.pie()饼图绘制实例:

      import matplotlib.pyplot as plt
      
      labels = 'Frogs','Hogs','Dogs','Logs'
      sizes = [15,30,45,10]
      explode = (0,0.1,0,0) #其中的0.1表示使其从饼图中分割下来显示,与原饼图间距0.1
      
      plt.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=False,startangle=90)
      
      plt.axis('equal') #使绘制的饼图为正圆形
      plt.show()
      
    • pyplot.hist()直方图绘制

      import numpy as np
      import matplotlib.pyplot as plt
      
      np.random.seed(0) #设置随机种子
      mu,sigma = 100,20
      a = np.random.normal(mu,sigma,size=100) #给定数组
      
      plt.hist(a,20,normed=1,histtype='stepfilled',facecolor='b',alpha=0.75) #20表示直方的个数bin,normed=1则纵轴表示概率,normed=0则纵轴表示个数
      
      plt.title('Histogram')
      plt.show()
      
    • 面向对象绘制极坐标

      import numpy as np
      import matplotlib.pyplot as plt
      
      N = 20
      theta = np.linspace(0.0,2*np.pi,N,endpoint=False)
      radii = 10 * np.random.rand(N)
      width = np.pi / 4*np.random.rand(N)
      
      ax = plt.subplot(111,projection='polar') #绘制子绘图区域
      bars = ax.bar(theta,radii,width=width,bottom=0.0)
      
      for r,bar in zip(radii,bars):
          bar.set_facecolor(plt.cm.viridis(r / 10.))
          bar.set_alpha(0.5)
          
      plt.show()
      
    • 面向对象绘制散点图

      import numpy as np
      import matplotlib.pyplot as plt
      
      fig,ax = plt.subplots() #fig图像对象
      ax.plot(10*np.random.randn(100),10*np.random.randn(100),'o') #randn()生成一个正态分布的函数
      ax.set_title('Simplt Scantter')
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值