matplotlib(1)---概念及折線圖的繪製

一. 基本概念(組成)

  1. matplotlib組成: 由棧組成, 分爲三層: Scripting(腳本), Artist(美工),Backend(後臺).
  2. 在整個matplotlib中, 圖形中所能看到的元素都屬於Artist對象, 即標題, 軸標籤, 刻度等組成的所有元素都是Artist對象的實例.
    (1) 如果把Artist比做畫畫的話, Figure相當於畫板, Axes(座標系)相當於畫畫的白紙, Axis(座標系)相當於白紙上畫的座標系
    所以, 可以說一個畫布(figure)可以有多個Axes(座標系), 一個座標系可以有多個Axis(座標軸), 包含兩個即爲2D座標系, 包含三個即爲3D座標系.
    (2) Subplot實際上是axes的特例(子集) , 就是一個畫布上多畫幾個Axes(座標系),再縮小到特定位置,就是Subplot了. 相當於MATLAB中的一個圖中有好幾個座標系
    在這裏插入圖片描述

二. 入門應用

1. 基本折線圖繪製

import matplotlib.pyplot as plt
# 當plot中參數只有一個列表時, 列表中數字代表縱座標, 橫座標從0開始
plt.plot([4, 6, 3, 6, 8, 7])
plt.show()

在這裏插入圖片描述

import matplotlib.pyplot as plt
# 當plot中參數有兩組列表時, 第一組代表橫座標, 第二組代表縱座標
plt.plot([0, 1, 2, 3, 4, 5, ], [1, 2, 3, 4, 5, 6])
plt.show()

在這裏插入圖片描述

2. 折線圖簡單應用: 繪製溫度變化折線圖

import matplotlib.pyplot as plt
import random

# 生成fig畫布在上面畫圖. figsize爲設置圖片尺寸, dpi爲設置圖片透明度, 數字越大透明度越高
plt.figure(figsize=(20, 8), dpi=80)

# 編碼中文顯示問題, 輸入這兩行代碼可以讓圖中的中文正常顯示
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

# 準備x, y座標的數據
x = range(60)  # 橫座標
# 上海天氣縱座標
y_shanghai = [random.uniform(15, 18) for i in x]
# 北京天氣縱座標
y_beijing = [random.uniform(3, 5) for i in x]
# 橫座標時間數據
x_ch = ["11點{}分".format(i) for i in x]
# 縱座標數據
y_ticks = range(40)

# 上海折線圖繪製
plt.plot(x, y_shanghai, label='上海')
# 北京折線圖繪製(x爲x軸, y_beijing爲y軸, color爲線條顏色, linestyle爲線條樣式, label爲綁定標籤'北京')
plt.plot(x, y_beijing, color='r', linestyle='--', label='北京')

# 顯示刻度, 間隔(步長)
plt.xticks(x[::5], x_ch[::5])  # 橫座標步長間隔5
plt.yticks(y_ticks[::5])  # 橫座標步長間隔5

# 曲線圖的各種屬性
plt.xlabel("時間")  # 橫座標屬性
plt.ylabel("溫度")  # 縱座標屬性
plt.title("一些城市的溫度變化曲線圖")  # 座標軸標題

# 圖中加入註釋(圖片右上角標誌)
plt.legend(loc="best")

# 保存圖片(我的圖片位置爲: C:\Users\admin)
plt.savefig("matplotlib.png")

# 顯示
plt.show()

運行結果如下圖 :
在這裏插入圖片描述

三. 多座標系建立

上一個應用是用的 plt.plot(), 意思是在畫布上建立一個座標系. 而subplot則是建立多個座標系. subplot: 畫多個座標系

  1. 語法: plt.subplots(nrows=1, ncols=1, **fig_kw)

  2. 設置不同標題的方法:
    set_xticks() : 設置橫座標的刻度
    set_yticks() : 設置縱座標的刻度
    set_xlabel() : 設置橫座標的題目
    set_ylabel() : 設置縱座標的題目
    set_title() : 設置圖標的標題

    # 畫出溫度變化圖
     
     import matplotlib.pyplot as plt
     import random
     
     # 返回兩個參數. nrows, ncols代表一行兩列
     fig,axes=plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=80)
     
     # 編碼中文顯示問題
     plt.rcParams['font.sans-serif']=['SimHei']
     plt.rcParams['axes.unicode_minus']=False
     
     # 準備x, y座標的數據
     x = range(60)
     # 上海
     y_shanghai = [random.uniform(15, 18) for i in x]
     # 北京
     y_beijing = [random.uniform(3, 5) for i in x]
     x_ch = ["11點{}分".format(i) for i in x]
     y_ticks = range(40)
     
     # 上海折線圖繪製
     axes[0].plot(x, y_shanghai, label='上海')
     # 北京折線圖繪製
     axes[1].plot(x, y_beijing, color='r', linestyle='--', label='北京')
     
     # 設置x軸間隔
     # 第一個參數: 必須是值, 第二個參數: 指定跟第一個參數對應的中文
     # x[::5]: 兩對冒號代表從0到x-1, 步長爲5.(聯想: 列表長度)
     axes[0].set_xticks(x[::5], x_ch[::5])
     axes[0].set_xticks(x[::5], x_ch[::5])
     
     # 設置y軸間隔
     axes[0].set_yticks(y_ticks[::5])
     axes[0].set_yticks(y_ticks[::5])
     
     # 折線圖的各種屬性
     # 設置x軸, y軸的時間標題. axes[0]代表第一個圖, axes[1]代表第二個圖
     axes[0].set_xlabel("時間")
     axes[1].set_xlabel("時間")
     # 設置x軸, y軸的溫度標題
     axes[0].set_ylabel("溫度")
     axes[0].set_ylabel("溫度")
     
     # 設置圖的標題
     axes[0].set_title("一些城市的溫度變化曲線圖")
     axes[1].set_title("一些城市的溫度變化曲線圖")
     
     # 圖中加入註釋
     plt.legend(loc="best")
     
     # 顯示
     plt.show()
    

在這裏插入圖片描述
此篇文章: matplotlib(2)—柱狀圖, 直方圖, 餅狀圖的繪製
繼續對matplotlib庫進行學習.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章