Python基於matplotlib的數據可視化

目錄:

基於matplotlib的數據可視化

matplotlib.pyplot基於Python語言的繪圖函數

基本圖形繪製

  1. 缺省樣式

    
    # -*- coding:utf-8 -*-
    
    
    from __future__ import unicode_literals
    import numpy as np 
    import matplotlib.pyplot as mp 
    
    #生成曲線上各點的水平座標
    
    x=np.linspace(-np.pi,np.pi,1000)
    
    cos_y=np.cos(x)/2
    sin_y=np.sin(x)
    
    h_y=x/2
    
    #用直線鏈接曲線上的各點
    
    mp.plot(x,cos_y)
    mp.plot(x,sin_y)
    mp.plot(x,h_y)
    
    #顯示圖形
    
    mp.show()

    這裏寫圖片描述

  2. 設置線型、線寬和顏色

    1. 代碼:

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import numpy as np
      import matplotlib.pyplot as mp
      
      # 生成曲線上各點的水平座標
      
      x = np.linspace(-np.pi, np.pi, 1000)
      
      # 根據曲線函數計算其上各點的垂直座標
      
      cos_y = np.cos(x) / 2
      sin_y = np.sin(x)
      
      # 用直線連接曲線上各點
      
      mp.plot(x, cos_y, linestyle='-', linewidth=1,
              color='dodgerblue')
      mp.plot(x, sin_y, linestyle='-', linewidth=1,
              color='orangered')
      
      # 顯示圖形
      
      mp.show()
      

      這裏寫圖片描述

  3. 設置座標範圍

    1. 設置水平座標範圍:mp.xlim(最小值, 最大值)
    2. 設置垂直座標範圍:mp.ylim(最小值, 最大值)
    3. 代碼:

      
      # -*- coding:utf-8 -*-
      
      from __future__ import unicode_literals
      import matplotlib.pyplot as mp 
      
      #   plotting 測繪 library 
      
      import numpy as np 
      
      #生成曲線上各點的水平座標
      
      x=np.linspace(-np.pi,np.pi,2000)
      
      #根據曲線函數計算其上各點的垂直座標
      
      cos_y=np.cos(x)/2
      sin_y=np.sin(x)
      
      #設置座標範圍
      
      mp.xlim(x.min()*1.1,x.max()*1.1)
      mp.ylim(min(cos_y.min(),sin_y.min())*1.1,
              max(cos_y.max(),sin_y.max())*1.1)
      
      #用直線連接曲線上各點
      
      mp.plot(x,cos_y,linestyle='-',linewidth=1,
          color='dodgerblue')
      mp.plot(x,sin_y,linestyle='-',linewidth=1,
          color='orangered')
      
      #顯示圖形
      
      mp.show()
  4. 設置座標軸刻度標籤

    1. mp.xticks(刻度標籤位置, 刻度標籤文本)
    2. mp.yticks(刻度標籤位置, 刻度標籤文本)
    3. 代碼:

      
      # -*- coding:utf-8 -*-
      
      from __future__ import unicode_literals
      import matplotlib.pyplot as mp 
      
      #   plotting 測繪 library 
      
      import numpy as np 
      
      #生成曲線上各點的水平座標
      
      x=np.linspace(-np.pi,np.pi,2000)
      
      #根據曲線函數計算其上各點的垂直座標
      
      cos_y=np.cos(x)/2
      sin_y=np.sin(x)
      
      #設置座標範圍
      
      mp.xlim(x.min()*1.1,x.max()*1.1)
      mp.ylim(min(cos_y.min(),sin_y.min())*1.1,
              max(cos_y.max(),sin_y.max())*1.1)
      
      mp.xticks([-np.pi,-np.pi/2,np.pi/2,np.pi*3/4,np.pi],
          [r'$-\pi$',r'$-\frac{\pi}{2}$',r'$0$',
          r'$\frac{\pi}{2}$',r'$\frac{3\pi}{4}$',r'$\pi$'])
      mp.yticks([-1,-0.5,0.5,1])
      
      #用直線連接曲線上各點
      
      mp.plot(x,cos_y,linestyle='-',linewidth=1,
          color='dodgerblue')
      mp.plot(x,sin_y,linestyle='-',linewidth=1,
          color='orangered')
      
      #顯示圖形
      
      mp.show()

      這裏寫圖片描述

  5. 將矩形座標軸改成十字座標軸

    1. 代碼:

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import numpy as np
      import matplotlib.pyplot as mp
      
      # 生成曲線上各點的水平座標
      
      x = np.linspace(-np.pi, np.pi, 1000)
      
      # 根據曲線函數計算其上各點的垂直座標
      
      cos_y = np.cos(x) / 2
      sin_y = np.sin(x)
      
      # 設置座標範圍
      
      mp.xlim(x.min() * 1.1, x.max() * 1.1)
      mp.ylim(min(cos_y.min(), sin_y.min()) * 1.1,
              max(cos_y.max(), sin_y.max()) * 1.1)
      
      # 設置座標軸刻度標籤
      
      mp.xticks([
          -np.pi, -np.pi / 2, 0, np.pi / 2, np.pi * 3 / 4, np.pi], [
          r'$-\pi$', r'$-\frac{\pi}{2}$', r'$0$',
          r'$\frac{\pi}{2}$', r'$\frac{3\pi}{4}$', r'$\pi$'])
      mp.yticks([-1, -0.5, 0.5, 1])
      
      # 將矩形座標軸改成十字座標軸
      
      
      # 獲取當前座標軸對象
      
      ax = mp.gca()
      
      # 將垂直座標刻度置於左邊框
      
      ax.yaxis.set_ticks_position('left')
      
      # 將左邊框置於數據座標原點
      
      ax.spines['left'].set_position(('data', 0))
      
      # 將水平座標刻度置於底邊框
      
      ax.xaxis.set_ticks_position('bottom')
      
      # 將底邊框置於數據座標原點
      
      ax.spines['bottom'].set_position(('data', 0))
      
      # 將右邊框和頂邊框設置成無色
      
      ax.spines['right'].set_color('none')
      ax.spines['top'].set_color('none')
      
      # 用直線連接曲線上各點
      
      mp.plot(x, cos_y, linestyle='-', linewidth=1,
              color='dodgerblue')
      mp.plot(x, sin_y, linestyle='-', linewidth=1,
              color='orangered')
      
      # 顯示圖形
      
      mp.show()

      這裏寫圖片描述

  6. 顯示圖例

    1. mp.plot(…, label=圖例文本)
    2. mp.legend(loc=圖例位置)
    3. 代碼:

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import numpy as np
      import matplotlib.pyplot as mp
      
      # 生成曲線上各點的水平座標
      
      x = np.linspace(-np.pi, np.pi, 1000)
      
      # 根據曲線函數計算其上各點的垂直座標
      
      cos_y = np.cos(x) / 2
      sin_y = np.sin(x)
      
      # 設置座標範圍
      
      mp.xlim(x.min() * 1.1, x.max() * 1.1)
      mp.ylim(min(cos_y.min(), sin_y.min()) * 1.1,
              max(cos_y.max(), sin_y.max()) * 1.1)
      
      # 設置座標軸刻度標籤
      
      mp.xticks([
          -np.pi, -np.pi / 2, 0, np.pi / 2, np.pi * 3 / 4, np.pi], [
          r'$-\pi$', r'$-\frac{\pi}{2}$', r'$0$',
          r'$\frac{\pi}{2}$', r'$\frac{3\pi}{4}$', r'$\pi$'])
      mp.yticks([-1, -0.5, 0.5, 1])
      
      # 將矩形座標軸改成十字座標軸
      
      
      # 獲取當前座標軸對象
      
      ax = mp.gca()
      
      # 將垂直座標刻度置於左邊框
      
      ax.yaxis.set_ticks_position('left')
      
      # 將左邊框置於數據座標原點
      
      ax.spines['left'].set_position(('data', 0))
      
      # 將水平座標刻度置於底邊框
      
      ax.xaxis.set_ticks_position('bottom')
      
      # 將底邊框置於數據座標原點
      
      ax.spines['bottom'].set_position(('data', 0))
      
      # 將右邊框和頂邊框設置成無色
      
      ax.spines['right'].set_color('none')
      ax.spines['top'].set_color('none')
      
      # 用直線連接曲線上各點
      
      mp.plot(x, cos_y, linestyle='-', linewidth=1,
              color='dodgerblue', label=r'$y=\frac{1}{2}cos(x)$')
      mp.plot(x, sin_y, linestyle='-', linewidth=1,
              color='orangered', label=r'$y=sin(x)$')
      mp.legend(loc='upper left')
      
      # 顯示圖形
      
      mp.show()

      這裏寫圖片描述

  7. 添加特殊點

    1. mp.scatter(點集水平座標數組,點集垂直座標數組,…)
    2. 代碼:

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import numpy as np
      import matplotlib.pyplot as mp
      
      # 生成曲線上各點的水平座標
      
      x = np.linspace(-np.pi, np.pi, 1000)
      
      # 根據曲線函數計算其上各點的垂直座標
      
      cos_y = np.cos(x) / 2
      sin_y = np.sin(x)
      
      # 計算特殊點的座標
      
      xo = np.pi * 3 / 4
      yo_cos = np.cos(xo) / 2
      yo_sin = np.sin(xo)
      
      # 設置座標範圍
      
      mp.xlim(x.min() * 1.1, x.max() * 1.1)
      mp.ylim(min(cos_y.min(), sin_y.min()) * 1.1,
              max(cos_y.max(), sin_y.max()) * 1.1)
      
      # 設置座標軸刻度標籤
      
      mp.xticks([
          -np.pi, -np.pi / 2, 0, np.pi / 2, np.pi * 3 / 4, np.pi], [
          r'$-\pi$', r'$-\frac{\pi}{2}$', r'$0$',
          r'$\frac{\pi}{2}$', r'$\frac{3\pi}{4}$', r'$\pi$'])
      mp.yticks([-1, -0.5, 0.5, 1])
      
      # 將矩形座標軸改成十字座標軸
      
      
      # 獲取當前座標軸對象
      
      ax = mp.gca()
      
      # 將垂直座標刻度置於左邊框
      
      ax.yaxis.set_ticks_position('left')
      
      # 將左邊框置於數據座標原點
      
      ax.spines['left'].set_position(('data', 0))
      
      # 將水平座標刻度置於底邊框
      
      ax.xaxis.set_ticks_position('bottom')
      
      # 將底邊框置於數據座標原點
      
      ax.spines['bottom'].set_position(('data', 0))
      
      # 將右邊框和頂邊框設置成無色
      
      ax.spines['right'].set_color('none')
      ax.spines['top'].set_color('none')
      
      # 用直線連接曲線上各點
      
      mp.plot(x, cos_y, linestyle='-', linewidth=1,
              color='dodgerblue', label=r'$y=\frac{1}{2}cos(x)$')
      mp.plot(x, sin_y, linestyle='-', linewidth=1,
              color='orangered', label=r'$y=sin(x)$')
      
      # 繪製特殊點
      
      mp.plot([xo, xo], [yo_cos, yo_sin], linestyle='--',
              linewidth=1, color='limegreen')
      mp.scatter([xo, xo], [yo_cos, yo_sin], s=60,
                 edgecolor='limegreen', facecolor='white',
                 zorder=3)
      mp.legend(loc='upper left')
      
      # 顯示圖形
      
      mp.show()

      這裏寫圖片描述

  8. 添加註釋

    1. mp.annotate(
      註釋文本,
      xy=目標位置,
      xytext=文本位置,
      textcoords=座標屬性,
      fontsize=字體大小,
      arrowprops=箭頭屬性)
    2. 代碼:

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import numpy as np
      import matplotlib.pyplot as mp
      
      # 生成曲線上各點的水平座標
      
      x = np.linspace(-np.pi, np.pi, 1000)
      
      # 根據曲線函數計算其上各點的垂直座標
      
      cos_y = np.cos(x) / 2
      sin_y = np.sin(x)
      
      # 計算特殊點的座標
      
      xo = np.pi * 3 / 4
      yo_cos = np.cos(xo) / 2
      yo_sin = np.sin(xo)
      
      # 設置座標範圍
      
      mp.xlim(x.min() * 1.1, x.max() * 1.1)
      mp.ylim(min(cos_y.min(), sin_y.min()) * 1.1,
              max(cos_y.max(), sin_y.max()) * 1.1)
      
      # 設置座標軸刻度標籤
      
      mp.xticks([
          -np.pi, -np.pi / 2, 0, np.pi / 2, np.pi * 3 / 4, np.pi], [
          r'$-\pi$', r'$-\frac{\pi}{2}$', r'$0$',
          r'$\frac{\pi}{2}$', r'$\frac{3\pi}{4}$', r'$\pi$'])
      mp.yticks([-1, -0.5, 0.5, 1])
      
      # 將矩形座標軸改成十字座標軸
      
      
      # 獲取當前座標軸對象
      
      ax = mp.gca()
      
      # 將垂直座標刻度置於左邊框
      
      ax.yaxis.set_ticks_position('left')
      
      # 將左邊框置於數據座標原點
      
      ax.spines['left'].set_position(('data', 0))
      
      # 將水平座標刻度置於底邊框
      
      ax.xaxis.set_ticks_position('bottom')
      
      # 將底邊框置於數據座標原點
      
      ax.spines['bottom'].set_position(('data', 0))
      
      # 將右邊框和頂邊框設置成無色
      
      ax.spines['right'].set_color('none')
      ax.spines['top'].set_color('none')
      
      # 用直線連接曲線上各點
      
      mp.plot(x, cos_y, linestyle='-', linewidth=1,
              color='dodgerblue', label=r'$y=\frac{1}{2}cos(x)$')
      mp.plot(x, sin_y, linestyle='-', linewidth=1,
              color='orangered', label=r'$y=sin(x)$')
      
      # 繪製特殊點
      
      mp.plot([xo, xo], [yo_cos, yo_sin], linestyle='--',
              linewidth=1, color='limegreen')
      mp.scatter([xo, xo], [yo_cos, yo_sin], s=60,
                 edgecolor='limegreen', facecolor='white',
                 zorder=3)
      
      # 添加註釋
      
      mp.annotate(
          r'$\frac{1}{2}cos(\frac{3\pi}{4})=-\frac{\sqrt{2}}{4}$',
          xy=(xo, yo_cos), xycoords='data',
          xytext=(-90, -40), textcoords='offset points',
          fontsize=14, arrowprops=dict(
              arrowstyle='->', connectionstyle='arc3, rad=0.2'))
      mp.annotate(
          r'$sin(\frac{3\pi}{4})=\frac{\sqrt{2}}{2}$',
          xy=(xo, yo_sin), xycoords='data',
          xytext=(20, 20), textcoords='offset points',
          fontsize=14, arrowprops=dict(
              arrowstyle='->', connectionstyle='arc3, rad=0.2'))
      
      # 顯示圖例
      
      mp.legend(loc='upper left')
      
      # 顯示圖形
      
      mp.show()

      這裏寫圖片描述

  9. 圖形對象

    1. 說明:一個圖像對象實際上就可以被看做是一個顯示圖形的窗口,出了缺省創建的圖形窗口以外,也可以通過函數手動創建圖形窗口並設置特殊的屬性。
    2. 屬性:
      1. mp.figure(對象名(標題文本), figsize=窗口大小,
        dpi=分辨率, facecolor=窗口顏色)
      2. mp.title(標題文本, fontsize=字體大小)
      3. mp.xlabel(水平軸標籤文本, fontsize=字體大小)
      4. mp.ylabel(垂直軸標籤文本, fontsize=字體大小)
      5. mp.tick_params(labelsize=刻度標籤字體大小)
      6. mp.grid(linestyle=網格線風格)
      7. 注意如果調用figure()函數時所指定的對象名並不存在,則新建一個圖形窗口,同時將其設置爲當前窗口,如果該對象名已經存在,則不再建新窗口,而只是將其所對應的圖形窗口設置爲當前窗口。調用該函數以後的所有繪圖都在當前窗口中完成。
    3. 代碼:

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import numpy as np
      import matplotlib.pyplot as mp
      x = np.linspace(-np.pi, np.pi, 1000)
      cos_y = np.cos(x) / 2
      sin_y = np.sin(x)
      mp.figure('Figure Object 1', figsize=(8, 6), dpi=60,
                facecolor='lightgray')#打開窗口,設置分辨率
      mp.title('Figure Object 1', fontsize=20)#設置標題
      mp.xlabel('x', fontsize=14)#水平標籤文本,fontsize=字體大小
      mp.ylabel('y', fontsize=14)#垂直標籤文件,fontsize字體大小
      mp.tick_params(labelsize=10)#labelsize=刻度標籤字體大小
      mp.grid(linestyle=':')#linestyle=網格線風格
      
      mp.figure('Figure Object 2', figsize=(8, 6), dpi=60,
                facecolor='lightgray')
      mp.title('Figure Object 2', fontsize=20)
      mp.xlabel('x', fontsize=14)
      mp.ylabel('y', fontsize=14)
      mp.tick_params(labelsize=10)
      mp.grid(linestyle=':')
      
      mp.figure('Figure Object 1')
      mp.plot(x, cos_y, color='dodgerblue',
              label=r'$y=\frac{1}{2}cos(x)$')
      mp.figure('Figure Object 2')
      mp.plot(x, sin_y, color='orangered', label=r'$y=sin(x)$')
      mp.legend()
      mp.figure('Figure Object 1')
      mp.legend()
      mp.show()
      

      這裏寫圖片描述

  10. 子座標圖

    1. mp.subplot(總行數, 總列數, 圖序號)
    2. 代碼:sub1.py、sub2.py、sub3.py

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import matplotlib.pyplot as mp
      mp.figure(facecolor='lightgray')
      mp.subplot(221)
      mp.xticks(())
      mp.yticks(())
      mp.text(0.5, 0.5, '1', ha='center', va='center', size=36,
              alpha=0.5)
      mp.subplot(222)
      mp.xticks(())
      mp.yticks(())
      mp.text(0.5, 0.5, '2', ha='center', va='center', size=36,
              alpha=0.5)
      mp.subplot(223)
      mp.xticks(())
      mp.yticks(())
      mp.text(0.5, 0.5, '3', ha='center', va='center', size=36,
              alpha=0.5)
      mp.subplot(224)
      mp.xticks(())
      mp.yticks(())
      mp.text(0.5, 0.5, '4', ha='center', va='center', size=36,
              alpha=0.5)
      mp.tight_layout()
      mp.show()

      這裏寫圖片描述

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import matplotlib.pyplot as mp
      import matplotlib.gridspec as mg
      mp.figure(facecolor='lightgray')
      gs = mg.GridSpec(3, 3)
      mp.subplot(gs[0, :2])
      mp.xticks(())
      mp.yticks(())
      mp.text(0.5, 0.5, '1', ha='center', va='center', size=36,
              alpha=0.5)
      mp.subplot(gs[1:, 0])
      mp.xticks(())
      mp.yticks(())
      mp.text(0.5, 0.5, '2', ha='center', va='center', size=36,
              alpha=0.5)
      mp.subplot(gs[2, 1:])
      mp.xticks(())
      mp.yticks(())
      mp.text(0.5, 0.5, '3', ha='center', va='center', size=36,
              alpha=0.5)
      mp.subplot(gs[:2, 2])
      mp.xticks(())
      mp.yticks(())
      mp.text(0.5, 0.5, '4', ha='center', va='center', size=36,
              alpha=0.5)
      mp.subplot(gs[1, 1])
      mp.xticks(())
      mp.yticks(())
      mp.text(0.5, 0.5, '5', ha='center', va='center', size=36,
              alpha=0.5)
      mp.tight_layout()
      mp.show()

      這裏寫圖片描述

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import matplotlib.pyplot as mp
      mp.figure(facecolor='lightgray')
      mp.axes([0.03, 0.038, 0.94, 0.924])
      mp.xticks(())
      mp.yticks(())
      mp.text(0.5, 0.5, '1', ha='center', va='center', size=36,
              alpha=0.5)
      mp.axes([0.63, 0.076, 0.31, 0.308])
      mp.xticks(())
      mp.yticks(())
      mp.text(0.5, 0.5, '2', ha='center', va='center', size=36,
              alpha=0.5)
      mp.show()
      

      這裏寫圖片描述

  11. 設置座標軸刻度定位器

    1. 怎麼設置:
      ax = mp.gca()
      ax.xaxis.set_major_locator(刻度定位器對象)
      ax.xaxis.set_minor_locator(刻度定位器對象)
      ax.yaxis.set_major_locator(刻度定位器對象)
      ax.yaxis.set_minor_locator(刻度定位器對象)
    2. 代碼:

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import numpy as np
      import matplotlib.pyplot as mp
      mp.figure()
      locators = [
          'mp.NullLocator()',
          'mp.MaxNLocator(nbins=3, steps=[1, 3, 5, 7, 9])',
          'mp.FixedLocator(locs=[0, 2.5, 7.5, 10])',
          'mp.AutoLocator()',
          'mp.IndexLocator(offset=0.5, base=1.5)',
          'mp.MultipleLocator()',
          'mp.LinearLocator(numticks=21)',
          'mp.LogLocator(base=2, subs=[1.0])']
      n_locators = len(locators)
      for i, locator in enumerate(locators):
          mp.subplot(n_locators, 1, i + 1)
          mp.xlim(0, 10)
          mp.ylim(-1, 1)
          mp.yticks(())
          ax = mp.gca()
          ax.spines['left'].set_color('none')
          ax.spines['top'].set_color('none')
          ax.spines['right'].set_color('none')
          ax.spines['bottom'].set_position(('data', 0))
          ax.xaxis.set_major_locator(eval(locator))
          ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1))
          mp.plot(np.arange(11), np.zeros(11), color='none')
          mp.text(5, 0.3, locator[3:], ha='center', size=12)
      mp.tight_layout()
      mp.show()
      

      這裏寫圖片描述

  12. 散點圖

    1. mp.scatter(水平座標數組, 垂直座標數組,
      s=大小, c=顏色, cmap=顏色映射, alpha=透明度)
    2. 代碼:

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import numpy as np
      import matplotlib.pyplot as mp
      n = 1000
      x = np.random.normal(0, 1, n)
      y = np.random.normal(0, 1, n)
      d = np.sqrt(x ** 2 + y ** 2)
      mp.figure('Scatter', facecolor='lightgray')
      mp.title('Scatter', fontsize=20)
      mp.xlabel('x', fontsize=14)
      mp.ylabel('y', fontsize=14)
      mp.tick_params(labelsize=10)
      mp.grid(linestyle=':')
      mp.scatter(x, y, s=6, c=d, cmap='jet_r', alpha=0.5)
      mp.show()

      這裏寫圖片描述

  13. 填充

    1. mp.fill_between(掃描線水平座標,
      掃描線起點垂直座標, 掃描線終點垂直座標,
      color=顏色, alpha=透明度)
    2. 代碼:

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import numpy as np
      import matplotlib.pyplot as mp
      n = 1000
      x = np.linspace(0, 8 * np.pi, n)
      sin_y = np.sin(x)
      cos_y = np.cos(x / 2) / 2
      mp.figure('Fill', facecolor='lightgray')
      mp.title('Fill', fontsize=20)
      mp.xlabel('x', fontsize=14)
      mp.ylabel('y', fontsize=14)
      mp.tick_params(labelsize=10)
      mp.grid(linestyle=':')
      mp.plot(x, sin_y, c='dodgerblue', label=r'$y=sin(x)$')
      mp.plot(x, cos_y, c='orangered',
              label=r'$y=\frac{1}{2}cos(\frac{x}{2})$')
      mp.fill_between(x, cos_y, sin_y, cos_y < sin_y,
                      color='dodgerblue', alpha=0.5)
      mp.fill_between(x, cos_y, sin_y, cos_y > sin_y,
                      color='orangered', alpha=0.5)
      mp.legend()
      mp.show()

      這裏寫圖片描述

  14. 條形圖

    1. mp.bar(矩形條的水平座標, 矩形條的高度
      ec=邊框色, fc=填充色, label=圖例標籤)
    2. 代碼:bar.py

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import numpy as np
      import matplotlib.pyplot as mp
      n = 12
      x = np.arange(n)
      y1 = np.random.uniform(0.5, 1.0, n) * (1 - x / n)
      y2 = np.random.uniform(0.5, 1.0, n) * (1 - x / n)
      mp.figure('Bar', facecolor='lightgray')
      mp.title('Bar', fontsize=20)
      mp.xlabel('x', fontsize=14)
      mp.ylabel('y', fontsize=14)
      mp.xticks(x, x + 1)
      mp.ylim(-1.25, 1.25)
      mp.tick_params(labelsize=10)
      mp.grid(axis='y', linestyle=':')
      mp.bar(x, y1, ec='white', fc='dodgerblue',
             label='Sample 1')
      for _x, _y in zip(x, y1):
          mp.text(_x, _y, '%.2f' % _y, ha='center',
                  va='bottom', size=8)
      mp.bar(x, -y2, ec='white', fc='dodgerblue', alpha=0.5,
             label='Sample 2')
      for _x, _y in zip(x, y2):
          mp.text(_x, -_y - 0.015, '%.2f' % _y, ha='center',
                  va='top', size=8)
      mp.legend()
      mp.show()

      這裏寫圖片描述

  15. 等高線圖

    1. mp.contour(x, y, z, 密度, colors=顏色,
      linewidths=線寬)
    2. mp.contourf(x, y, z, 密度, cmap=顏色映射)
    3. 代碼:

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import numpy as np
      import matplotlib.pyplot as mp
      n = 1000
      x, y = np.meshgrid(np.linspace(-3, 3, n),
                         np.linspace(-3, 3, n))
      z = (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)
      mp.figure('Contour', facecolor='lightgray')
      mp.title('Contour', fontsize=20)
      mp.xlabel('x', fontsize=14)
      mp.ylabel('y', fontsize=14)
      mp.tick_params(labelsize=10)
      mp.grid(linestyle=':')
      mp.contourf(x, y, z, 8, cmap='jet')
      cntr = mp.contour(x, y, z, 8, colors='black', linewidths=0.5)
      mp.clabel(cntr, inline_spacing=1, fmt='%.1f', fontsize=8)
      mp.show()

      這裏寫圖片描述

  16. 熱力圖
    1. mp.imshow(深度座標, cmap=顏色映射,
      origin=垂直軸向)
    2. 代碼:hot.py
  17. 三維曲面/線框圖

    1. 怎麼做
      from mpl_toolkits.mplot3d import axes3d
      ax=mp.gca(projection=’3d’)
      ax.plot_surface(x, y, z, rstride=垂直步長,
      cstride=水平步長, cmap=顏色映射)
      ax.plot_wireframe(x, y, z, rstride=垂直步長,
      cstride=水平步長, color=顏色,
      linewidth=線寬)
    2. 代碼:

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import numpy as np
      import matplotlib.pyplot as mp
      from mpl_toolkits.mplot3d import axes3d
      n = 1000
      x, y = np.meshgrid(np.linspace(-3, 3, n),
                         np.linspace(-3, 3, n))
      z = (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)
      mp.figure('3D Surface')
      ax = mp.gca(projection='3d')
      mp.title('3D Surface', fontsize=20)
      ax.set_xlabel('x', fontsize=14)
      ax.set_ylabel('y', fontsize=14)
      ax.set_zlabel('z', fontsize=14)
      mp.tick_params(labelsize=10)
      ax.plot_surface(x, y, z, rstride=10, cstride=10, cmap='jet')
      mp.figure('3D Wireframe')
      ax = mp.gca(projection='3d')
      mp.title('3D Wireframe', fontsize=20)
      ax.set_xlabel('x', fontsize=14)
      ax.set_ylabel('y', fontsize=14)
      ax.set_zlabel('z', fontsize=14)
      mp.tick_params(labelsize=10)
      ax.plot_wireframe(x, y, z, rstride=20, cstride=20,
                        linewidth=0.5, color='orangered')
      mp.show()

      這裏寫圖片描述
      這裏寫圖片描述

  18. 餅圖

    1. mp.pie(值,空,標,色,格)
    2. 代碼:pie.py

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import matplotlib.pyplot as mp
      values = [26, 17, 21, 29, 11]
      spaces = [0.05, 0.01, 0.01, 0.01, 0.01]
      labels = ['Python', 'JavaScript', 'C++', 'C', 'PHP']
      colors = ['dodgerblue', 'orangered', 'limegreen', 'violet',
                'gold']
      mp.figure('Pie', facecolor='lightgray')
      mp.title('Pie', fontsize=20)
      mp.pie(values, spaces, labels, colors, '%d%%', shadow=True,
             startangle=90)
      mp.axis('equal')
      mp.show()
      

      這裏寫圖片描述

  19. 座標格線

    1. ax = mp.gca()
    2. ax.grid(which=主次刻度, axis=橫縱軸,
      linewidth=線寬, linestyle=線型, color=顏色)
    3. 代碼:grid.py

      
      # -*- coding: utf-8 -*-
      
      from __future__ import unicode_literals
      import numpy as np
      import matplotlib.pyplot as mp
      x = np.linspace(-5, 5, 1000)
      y = 8 * np.sinc(x)
      mp.figure('Grid', facecolor='lightgray')
      mp.title('Grid', fontsize=20)
      mp.xlabel('x', fontsize=14)
      mp.ylabel('y', fontsize=14)
      ax = mp.gca()
      ax.xaxis.set_major_locator(mp.MultipleLocator())
      ax.xaxis.set_minor_locator(mp.MultipleLocator(.1))
      ax.yaxis.set_major_locator(mp.MultipleLocator())
      ax.yaxis.set_minor_locator(mp.MultipleLocator(.1))
      mp.tick_params(labelsize=10)
      ax.grid(which='major', axis='both', linewidth=0.75,
              linestyle='-', color='lightgray')
      ax.grid(which='minor', axis='both', linewidth=0.25,
              linestyle='-', color='lightgray')
      mp.plot(x, y, c='dodgerblue', label=r'$y=8sinc(x)$')
      mp.legend()
      mp.show()
      

      這裏寫圖片描述

  20. 極座標
    1. ax = mp.gca(projection=’polar’)
    2. mp.plot(極角, 極徑, …)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章