1. 程式人生 > 其它 >人工智慧機器學習有關-Matplotlib工具的使用(二)

人工智慧機器學習有關-Matplotlib工具的使用(二)

Matplotlib的使用

  • Matplotlib:可以用來畫圖的工具,為了讓資料看起來更加直觀。
    • 定義
      主要用於開發2D圖表(3D),資料分析,基於分析,進行展示
    • 繪圖流程
      • 建立畫布
      • 繪製圖像
      • 顯示影象
點選檢視程式碼
 import matplotlib.pyplot as plt
        # 1.建立畫布
        plt.figure
        
        #2. 影象繪製
        x = [1,2,3,4,5,6]
        y = [3,6,3,6,3,10]
        plt.plot(x,y)
        
        # 3.影象展示
        plt.show()
  • matplotlib三層結構

    • 容器層
      • canvas
      • figure
      • axes
    • 輔助顯示層
      新增X軸,y軸描述,標題.....
    • 影象層
      繪製什麼影象的宣告
  • 影象的儲存
    # 1.建立畫布
    # figsize指畫布大小,dpi指畫素
    plt.figure(figsize=(20,8),dpi=100)

    # 2. 影象繪製
    x = [1,2,3,4,5,6]
    y = [3,6,3,6,3,10]
    plt.plot(x,y)
    
    # 2.1 影象儲存
    plt.savefig("./data/demo.png")  #儲存在根目錄下面的data資料夾裡面,名字Wiedemo.png
    
    # 3.影象展示
    plt.show()  # 注意,當show之後,就釋放資源了,就不可以在進行其他的操作了
    
  • 新增x,y軸
    import matplotlib.pyplot as plt
    import random

    # 0.生成資料
    x = range(60)
    # 列表生成式
    y = [random.uniform(10,15) for i in x]
    
    # 1.建立畫布
    plt.figure(figsize=(20,8),dpi=100)
    
    # 2.影象繪製
    plt.plot(x,y)
    
    # 2.1 新增x,y軸刻度
    y_ticks = range(40)
    
    # 這一步出現['11點0分','11點1分','11點2分','11點3分','11點4分'。。。
    x_ticks_labels = ["11點{}分".format(i) for i in x]
    
    
    # 控制y軸,每一格之間的距離是5
    plt.yticks(y_ticks[::5])
    
    # 控制x軸,每一個格之間距離是5,且顯示為11點0分,11點5分。。。
    plt.xticks(x[::5],x_ticks_labels[::5])
    
    
    # 3.影象展示
    plt.show()
    
  • 新增網格
    # True代表新增網格;linestyle="--"代表網格為虛線,“-”代表為實線,alpha=1代表為透明度
    plt.grid(True,linestyle="--",alpha=1)

  • 新增描述
    # 2.3 新增描述
    plt.xlabel("時間")
    plt.ylabel("溫度")
    plt.title("一小時溫度變化圖",fontsize=20)

如果漢字不顯示,則這樣解決:

import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=13)
  • 繪製多個曲線並顯示圖例
    import matplotlib.pyplot as plt
    import random
    import matplotlib.pyplot as plt
    plt.rc('font', family='SimHei', size=20)

    # 0.生成資料
    x = range(60)
    y_beijing = [random.uniform(10,15) for i in x]
    y_shanghai = [random.uniform(15,25) for i in x]
    
    # 1.建立畫布
    plt.figure(figsize=(20,8),dpi=100)
    
    # 2.影象繪製,顯示圖例的話需要在這個裡面假如label
    plt.plot(x,y_beijing,label="北京")
    plt.plot(x,y_shanghai,label="上海")
    
    # 2.1 新增x,y軸刻度
    y_ticks = range(40)
    
        # 這一步出現['11點0分','11點1分','11點2分','11點3分','11點4分'。。。
    x_ticks_labels = ["11點{}分".format(i) for i in x]
    
    
        # 控制y軸,每一格之間的距離是5
    plt.yticks(y_ticks[::5])
    
        # 控制x軸,每一個格之間距離是5,且顯示為11點0分,11點5分。。。
    plt.xticks(x[::5],x_ticks_labels[::5])
    
    # 2.2 新增網格
        # True代表新增網格;linestyle="--"代表網格為虛線,“-”代表為實線,alpha=1代表為透明度
    plt.grid(True,linestyle="--",alpha=1)
    
    # 2.3 新增描述
    plt.xlabel("時間")
    plt.ylabel("溫度")
    plt.title("一小時溫度變化圖",fontsize=20)
    
    
    # 2.4 顯示圖例
    plt.legend()
    
    # 3.影象展示
    plt.show()
    
  • 多個座標系顯示影象
    import matplotlib.pyplot as plt
    import random
    import matplotlib.pyplot as plt
    plt.rc('font', family='SimHei', size=13)

    # 0.生成資料
    x = range(60)
    y_beijing = [random.uniform(10,15) for i in x]
    y_shanghai = [random.uniform(15,25) for i in x]
    
    # 1.建立畫布,nrows代表幾行,ncols代表幾列
    fig, axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)
    
    # 2.影象繪製,顯示圖例的話需要在這個裡面加入label
    axes[0].plot(x,y_beijing,label="北京",color="g",linestyle="-.")
    axes[1].plot(x,y_shanghai,label="上海")
    
    # 2.1 新增x,y軸刻度
    y_ticks = range(40)
    
    # 這一步出現'11點0分','11點1分','11點2分','11點3分','11點4分'。。。
    x_ticks_labels = ["11點{}分".format(i) for i in x]
    
    axes[0].set_xticks(x[::5])
    axes[0].set_yticks(y_ticks[::5])
    axes[0].set_xticklabels(x_ticks_labels[::5])
    
    axes[1].set_xticks(x[::5])
    axes[1].set_yticks(y_ticks[::5])
    axes[1].set_xticklabels(x_ticks_labels[::5])
    
    # 2.2 新增網格
    axes[0].grid(True,linestyle="--",alpha=1)
    axes[1].grid(True,linestyle="--",alpha=1)
    
    # 2.3新增描述
    axes[0].set_xlabel("時間")
    axes[0].set_ylabel("溫度")
    axes[0].set_title("北京一小時溫度變化圖")
    
    axes[1].set_xlabel("時間")
    axes[1].set_ylabel("溫度")
    axes[1].set_title("上海一小時溫度變化圖")
    # 2.4顯示圖例
    axes[0].legend(loc=0)
    axes[1].legend(loc=0)
    
    # 3.影象展示
    plt.show()