matplotlib 入門

爲何要學習matplotlib

1.能將數據進行可視化,更直觀的呈現html

2.使數據更加客觀,更具說服力app

什麼是matplotlib

matplotlib:最流行的Python底層繪圖庫,主要作數據可視化圖表,模仿MATLAB建立dom

基礎繪圖

案例

假設一天中每隔兩個小時(range(2,26,2))的氣溫分別是[15,13,14.5,17,20,25,26,26,24,22,18,15]學習

 代碼
import matplotlib.pyplot as plt
 規範,官方推薦構建座標
x = range(2,26,2)
y = [15,13,14.5,17,20,25,26,26,24,22,18,15]
 畫圖
plt.plot(x, y)
 顯示圖標
plt.show()

設置圖片大小

案例

 代碼
fig = plt.figure(figsize=(20,8), dpi=100)
 figsize 接收一個元組,表示圖片的高和寬,單位是英寸 dpi 分辨率,表明了每一英寸有多少個像素,默認80
plt.plot(x,y)
plt.show()

 

 

 

保存圖片

 代碼
fig = plt.figure(figsize=(20,8), dpi=100)
plt.plot(x,y)
fig.savefig('test.png')

x軸,y軸刻度調整

案例1

1 # 代碼
2 plt.plot(x, y)
3 # x軸的刻度
4 plt.xticks(x)
5 # y軸的刻度
6 plt.yticks(y)
7 plt.show()

 

 

案例2

列表a表示10點到12點每一分鐘的氣溫,如何繪製折線圖觀察每分鐘氣溫的變化狀況?字體

a = [random.randint(20,35) for i in range(120)]大數據

 1 # 代碼
 2 import random
 3 
 4 # 隨機氣溫值
 5 # y = []
 6 # 產生120個隨機值
 7 #for i in range(120):
 8 #    y.append(random.randint(20,35))
 9 # 列表生成式
10 y = [random.randint(20,35) for i in range(120)]
11 x = list(range(120))
12 # 設置圖片大小
13 fig = plt.figure(figsize=(20,8))
14 # 畫圖
15 plt.plot(x,y)
16 # 調整刻度
17 xlables = ['10點{}分'.format(i) for i in range(60) ]
18 xlables += ['11點{}分'.format(i) for i in range(60) ]
19 plt.xticks(x[::3], xlables[::3])
20 plt.yticks(y)
21 plt.show()

 

 

顯示中文

matplotlib默認不支持中文字符,須要修改默認字體來顯示中文字符。this

案例

 1 # 代碼
 2 import random
 3 import matplotlib as mpl
 4 # 設置字符集
 5 mpl.rcParams['font.sans-serif'] = ['FangSong'] # 用來正常顯示中文標籤
 6 mpl.rcParams['font.size'] = 16         # 設置字體大小
 7 # 隨機氣溫值
 8 # y = []
 9 # 產生120個隨機值
10 #for i in range(120):
11 #    y.append(random.randint(20,35))
12 # 列表生成式
13 y = [random.randint(20,35) for i in range(120)]
14 x = list(range(120))
15 # 設置圖片大小
16 fig = plt.figure(figsize=(20,8))
17 # 畫圖
18 plt.plot(x,y)
19 # 調整刻度
20 xlables = ['10點{}分'.format(i) for i in range(60) ]
21 xlables += ['11點{}分'.format(i) for i in range(60) ]
22 plt.xticks(x[::3], xlables[::3], rotation=45)
23 plt.yticks(y)
24 plt.show()

 

 

添加描述信息

x,y軸描述

 1 # 代碼
 2 y = [random.randint(20,35) for i in range(120)]
 3 x = list(range(120))
 4 # 設置圖片大小
 5 fig = plt.figure(figsize=(20,8))
 6 # 畫圖
 7 plt.plot(x,y)
 8 # 調整刻度
 9 xlables = ['10點{}分'.format(i) for i in range(60) ]
10 xlables += ['11點{}分'.format(i) for i in range(60) ]
11 plt.xticks(x[::3], xlables[::3], rotation=45)
12 plt.yticks(y)
13 # 添加描述
14 plt.xlabel('時間', color='red', fontdict={'fontsize': 20})
15 plt.ylabel('溫度')
16 plt.show()

圖形標題

 1 # 代碼
 2 y = [random.randint(20,35) for i in range(120)]
 3 x = list(range(120))
 4 # 設置圖片大小
 5 fig = plt.figure(figsize=(20,8))
 6 # 畫圖
 7 plt.plot(x,y)
 8 # 調整刻度
 9 xlables = ['10點{}分'.format(i) for i in range(60) ]
10 xlables += ['11點{}分'.format(i) for i in range(60) ]
11 plt.xticks(x[::3], xlables[::3], rotation=45)
12 plt.yticks(y)
13 # 添加描述
14 plt.xlabel('時間', color='red', fontdict={'fontsize': 20})
15 plt.ylabel('溫度')
16 # 設置標題
17 plt.title('某日10點到12點間的溫度變化狀況')
18 plt.show()

網格

 1 # 代碼
 2 # 代碼
 3 y = [random.randint(20,35) for i in range(120)]
 4 x = list(range(120))
 5 # 設置圖片大小
 6 fig = plt.figure(figsize=(20,8))
 7 # 畫圖
 8 plt.plot(x,y)
 9 # 調整刻度
10 xlables = ['10點{}分'.format(i) for i in range(60) ]
11 xlables += ['11點{}分'.format(i) for i in range(60) ]
12 plt.xticks(x[::3], xlables[::3], rotation=45)
13 plt.yticks(y)
14 # 添加描述
15 plt.xlabel('時間', color='red', fontdict={'fontsize': 20})
16 plt.ylabel('溫度')
17 # 設置標題
18 plt.title('某日10點到12點間的溫度變化狀況')
19 # 添加網格
20 plt.grid(alpha=0.1)
21 plt.show()

一個圖中畫多個圖

案例

問題:根據實際狀況統計出來你和你的同桌各自從11歲到30歲每一年交的女(男)朋友的數量如列表a和b,請在一個圖中繪製出該數據的折線圖,以便比較本身和同桌20年間的差別,同時分析每一年交女(男)朋友的數量走勢spa

a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]code

b = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]orm

 1 #代碼
 2 import matplotlib.pyplot as plt
 3 import matplotlib as mpl
 4 # 設置中文
 5 mpl.rcParams['font.sans-serif'] = ['FangSong'] # 用來正常顯示中文標籤
 6 mpl.rcParams['font.size'] = 16         # 設置字體大小
 7 # 構建座標
 8 # x軸表示 年齡 ,y軸表示女友個數
 9 x = range(11, 31)
10 y_self = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
11 y_d = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]
12 
13 # 建立容器
14 fig = plt.figure(figsize=(20,8))
15 # 畫圖
16 plt.plot(x, y_self, label='本身', color='black', linestyle='-.')
17 plt.plot(x, y_d, label='同桌')
18 # 設置刻度
19 x_lables = ['{}歲'.format(i) for i in x]
20 plt.xticks(x, x_lables)
21 
22 plt.xlabel('年齡')
23 plt.ylabel('女友個數')
24 plt.title('我和同桌曆年交女友個數對比')
25 # 設置了圖例必定要加上這句話
26 plt.legend()
27 plt.grid(alpha=0.3)
28 # 標記點
29 plt.annotate('最高點',xy=(23,6), xytext=(24, 6),arrowprops={'arrowstyle': '<->'})
30 plt.show()

 

 

自定義繪圖風格

1 # 代碼
2 plt.plot(
3     x,
4     y,
5     color='r', # 線條顏色
6     linestyle='--',    # 線條風格
7     linewidth=5,    # 線條粗細
8     alpha=0.5        #透明度
9 )

標記一個點

 1 # 代碼
 2 plt.annotate(text='最高點', xytext=(24, 6.1), xy=(23, 6), arrowprops={'arrowstyle': '->'})
 3 # text 想要標記的文本
 4 # xytext 標記文本的座標
 5 # xy 被標記點的座標 
 6 # arrowprops 箭頭形式
 7 '''
 8            ============   =============================================
 9             Name           Attrs
10             ============   =============================================
11             ``'-'``        None
12             ``'->'``       head_length=0.4,head_width=0.2
13             ``'-['``       widthB=1.0,lengthB=0.2,angleB=None
14             ``'|-|'``      widthA=1.0,widthB=1.0
15             ``'-|>'``      head_length=0.4,head_width=0.2
16             ``'<-'``       head_length=0.4,head_width=0.2
17             ``'<->'``      head_length=0.4,head_width=0.2
18             ``'<|-'``      head_length=0.4,head_width=0.2
19             ``'<|-|>'``    head_length=0.4,head_width=0.2
20             ``'fancy'``    head_length=0.4,head_width=0.4,tail_width=0.4
21             ``'simple'``   head_length=0.5,head_width=0.5,tail_width=0.2
22             ``'wedge'``    tail_width=0.3,shrink_factor=0.5
23             ============   =============================================
24 '''

總結

1.繪製了折線圖

2.設置了圖片的大小和分辨率

3.實現的圖片的保存

4.設置了XY軸的刻度和字符串

5.解決了刻度稀疏和密度的問題

6.設置了標題,x,y軸的lable

7.設置了字體

8.在一個圖上繪製多個圖形

9.爲不一樣圖形添加圖例

繪製散點圖

假設經過爬蟲你獲取到了北京2016年3月份,10月份天天白天的最高氣溫(分別位於列表 a, b),要求找出氣溫隨時間變化的規律。

1 a = [10, 16, 17, 14, 12, 10, 12, 6, 6, 7, 8, 9, 12, 15, 15, 17, 18, 21, 16, 16, 20, 13, 15, 15, 15, 18, 20, 22, 22, 22, 24]
2 b = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13, 12, 13, 6]
3 # 數據來源:http://lishi.tianqi.com/beijing/201610.html

散點圖的更多應用場景

不一樣條件(維度)之間的內在關聯關係

觀察數據的離散程度

繪製條形圖

問題1

假設獲取到2019年內地電影票房前20的電影(列表x)和電影票房數據(列表y),那麼如何更加直觀的展現數據。

1 x = ['哪吒之魔童降世', '流浪地球', '復仇者聯盟4:終局之戰', '瘋狂的外星人', '飛馳人生', '烈火英雄', '速度與激情:特別行動', '蜘蛛俠:英雄遠征', '掃毒2天地對決', '大黃蜂', '驚奇隊長', '比悲傷更悲傷的故事', '哥斯拉2:怪獸之王', '阿麗塔:戰鬥天使', '銀河補習班', '獅子王', '反貪風暴4 ', '熊出沒·原始時代', '使徒行者2:諜影行動', '大偵探皮卡丘']
2 y = [49.04, 46.18, 42.05, 21.83, 17.03, 16.74, 14.16, 14.01, 12.85, 11.38, 10.25, 9.46, 9.27, 8.88, 8.64, 8.23, 7.88, 7.09, 6.92, 6.34]
 1 # 代碼
 2 import matplotlib as mpl
 3 import matplotlib.pyplot as plt
 4 
 5 # 設置中文
 6 mpl.rcParams['font.sans-serif'] = ['FangSong'] # 用來正常顯示中文標籤
 7 mpl.rcParams['font.size'] = 16         # 設置字體大小
 8 
 9 # 構建座標
10 movies = ['哪吒之魔童降世', '流浪地球', '復仇者聯盟4:終局之戰', '瘋狂的外星人', '飛馳人生', '烈火英雄', '速度與激情:特別行動', '蜘蛛俠:英雄遠征', '掃毒2天地對決', '大黃蜂', '驚奇隊長', '比悲傷更悲傷的故事', '哥斯拉2:怪獸之王', '阿麗塔:戰鬥天使', '銀河補習班', '獅子王', '反貪風暴4 ', '熊出沒·原始時代', '使徒行者2:諜影行動', '大偵探皮卡丘']
11 
12 y = [49.04, 46.18, 42.05, 21.83, 17.03, 16.74, 14.16, 14.01, 12.85, 11.38, 10.25, 9.46, 9.27, 8.88, 8.64, 8.23, 7.88, 7.09, 6.92, 6.34]
13 
14 x = range(len(movies))
15 
16 # 畫圖
17 fig = plt.figure(figsize=(20,8), dpi=100)
18 plt.bar(x, y, width=0.5, color='orange')
19 # 刻度
20 plt.xticks(x, movies, rotation=-90)
21 
22 plt.xlabel('電影')
23 plt.ylabel('票房(億元)')
24 plt.title('2019年內地前20名電影票房榜')
25 # 網格
26 # plt.grid()
27 plt.show()

 

 

橫向的條形圖

 1 # 代碼
 2 import matplotlib as mpl
 3 import matplotlib.pyplot as plt
 4 
 5 # 設置中文
 6 mpl.rcParams['font.sans-serif'] = ['FangSong'] # 用來正常顯示中文標籤
 7 mpl.rcParams['font.size'] = 16         # 設置字體大小
 8 
 9 # 構建座標
10 movies = ['哪吒之魔童降世', '流浪地球', '復仇者聯盟4:終局之戰', '瘋狂的外星人', '飛馳人生', '烈火英雄', '速度與激情:特別行動', '蜘蛛俠:英雄遠征', '掃毒2天地對決', '大黃蜂', '驚奇隊長', '比悲傷更悲傷的故事', '哥斯拉2:怪獸之王', '阿麗塔:戰鬥天使', '銀河補習班', '獅子王', '反貪風暴4 ', '熊出沒·原始時代', '使徒行者2:諜影行動', '大偵探皮卡丘']
11 
12 y = [49.04, 46.18, 42.05, 21.83, 17.03, 16.74, 14.16, 14.01, 12.85, 11.38, 10.25, 9.46, 9.27, 8.88, 8.64, 8.23, 7.88, 7.09, 6.92, 6.34]
13 
14 x = range(len(movies))
15 
16 # 畫圖
17 fig = plt.figure(figsize=(20,8), dpi=100)
18 plt.barh(x, y, color='orange')
19 # 刻度
20 plt.yticks(x, movies)
21 
22 plt.ylabel('電影')
23 plt.xlabel('票房(億元)')
24 plt.title('2019年內地前20名電影票房榜')
25 # 網格
26 # plt.grid()
27 plt.show()

 

 

問題2

列表a中的電影的電影最近5天的電影分別在列表,b_25,b_26,b_27,b_28,b_29中,爲了展現電影自己票房,及同其餘電影數據的對比,應該如何更加直觀的呈現數據。

1 a = ['決勝時刻', '誅仙Ⅰ', '小小的願望']
2 b_25 = [891.4, 246.71, 550.45]
3 b_26 = [819.27, 397.18, 513.67]
4 b_27 = [867.78, 480.43, 752.36]
5 b_28 = [533.09, 500.42, 780.69]
6 b_29 = [679.87, 462.28, 374.11]
 1 # 代碼
 2 # 導庫
 3 import matplotlib as mpl
 4 import matplotlib.pyplot as plt
 5 
 6 # 設置中文
 7 mpl.rcParams['font.sans-serif'] = ['Fangsong']
 8 mpl.rcParams['font.size'] = 16
 9 # 準備數據
10 a = ['決勝時刻', '誅仙Ⅰ', '小小的願望']
11 b_25 = [891.4, 246.71, 550.45]
12 b_26 = [819.27, 397.18, 513.67]
13 b_27 = [867.78, 480.43, 752.36]
14 b_28 = [533.09, 500.42, 780.69]
15 b_29 = [679.87, 462.28, 374.11]
16 #
17 fig = plt.figure(figsize=(20,8))
18 width = 0.1
19 plt.bar(range(3), b_25, width=width)
20 plt.bar([i+width for i in range(3)], b_26, width=width, label='9月26日')
21 plt.bar([i+width*2 for i in range(3)], b_27, width=width, label='9月27日')
22 plt.bar([i+width*3 for i in range(3)], b_28, width=width, label='9月28日')
23 plt.bar([i+width*4 for i in range(3)], b_29, width=width, label='9月29日')
24 # 刻度
25 plt.xticks([0.2, 1.2, 2.2], a)
26 # 描述信息
27 plt.xlabel('電影')
28 plt.ylabel('票房(萬)')
29 plt.title('某些電影的票房')
30 plt.legend()
31 plt.show()

 

 

條形圖的更多應用場景

數量統計

頻率統計

繪製直方圖

問題1

咱們獲取了347部電影的時長(列表data中),但願統計出這些電影的時長的分佈狀態(好比時長100到120分鐘電影的數量,出現頻次)等信息,你該如何呈現這些數據?

1 data = [110, 201, 160, 152, 139, 178, 179, 83, 67, 132, 136, 177, 162, 110, 132, 115, 108, 102, 76, 105, 108, 24, 140, 162, 143, 165, 163, 95, 129, 137, 84, 93, 115, 96, 145, 173, 102, 116, 100, 120, 119, 88, 108, 136, 144, 111, 212, 87, 120, 91, 126, 55, 134, 181, 159, 138, 119, 138, 93, 155, 119, 88, 108, 136, 144, 111, 212, 87, 120, 91, 126, 55, 134, 181, 159, 138, 119, 138, 93, 155, 89, 140, 139, 75, 230, 179, 126, 178, 102, 91, 150, 96, 118, 100, 125, 130, 144, 140, 124, 157, 162, 121, 170, 111, 124, 99, 102, 75, 120, 139, 110, 138, 40, 70, 138, 137, 123, 133, 161, 83, 89, 140, 139, 75, 230, 179, 126, 178, 102, 91, 150, 96, 118, 100, 125, 130, 144, 140, 124, 157, 162, 121, 170, 111, 124, 99, 102, 75, 120, 139, 110, 138, 40, 70, 138, 137, 123, 133, 161, 83, 93, 121, 105, 106, 140, 101, 124, 148, 131, 101, 90, 90, 100, 129, 100, 94, 96, 89, 144, 100, 107, 90, 137, 133, 97, 84, 99, 142, 126, 132, 144, 124, 112, 111, 169, 151, 132, 169, 127, 120, 162, 121, 170, 111, 124, 99, 102, 75, 120, 139, 110, 138, 40, 70, 138, 137, 123, 133, 161, 83, 93, 121, 105, 106, 140, 101, 124, 148, 131, 101, 90, 90, 100, 129, 100, 94, 96, 89, 144, 100, 107, 90, 137, 133, 97, 84, 99, 142, 126, 132, 144, 124, 112, 111, 169, 151, 132, 169, 127, 120, 101, 141, 99, 139, 132, 93, 136, 127, 87, 96, 108, 120, 111, 130, 91, 237, 151, 76, 102, 64, 118, 84, 84, 105, 140, 144, 133, 93, 123, 147, 130, 149, 147, 121, 114, 105, 104, 98, 115, 93, 121, 105, 106, 140, 101, 124, 148, 131, 101, 90, 90, 100, 129, 100, 94, 96, 89, 144, 100, 107, 90, 137, 133, 97, 84, 99, 142, 126, 132, 144, 124, 112, 111, 169, 151, 132, 169, 127, 120, 101, 141, 99, 139, 132, 93, 136, 127]
 1 # 代碼
 2 import matplotlib as mpl
 3 import matplotlib.pyplot as plt
 4 
 5 # 設置中文
 6 mpl.rcParams['font.sans-serif'] = ['Fangsong']
 7 mpl.rcParams['font.size'] = 16
 8 
 9 # 準備數據
10 data = [110, 201, 160, 152, 139, 178, 179, 83, 67, 132, 136, 177, 162, 110, 132, 115, 108, 102, 76, 105, 108, 24, 140, 162, 143, 165, 163, 95, 129, 137, 84, 93, 115, 96, 145, 173, 102, 116, 100, 120, 119, 88, 108, 136, 144, 111, 212, 87, 120, 91, 126, 55, 134, 181, 159, 138, 119, 138, 93, 155, 119, 88, 108, 136, 144, 111, 212, 87, 120, 91, 126, 55, 134, 181, 159, 138, 119, 138, 93, 155, 89, 140, 139, 75, 230, 179, 126, 178, 102, 91, 150, 96, 118, 100, 125, 130, 144, 140, 124, 157, 162, 121, 170, 111, 124, 99, 102, 75, 120, 139, 110, 138, 40, 70, 138, 137, 123, 133, 161, 83, 89, 140, 139, 75, 230, 179, 126, 178, 102, 91, 150, 96, 118, 100, 125, 130, 144, 140, 124, 157, 162, 121, 170, 111, 124, 99, 102, 75, 120, 139, 110, 138, 40, 70, 138, 137, 123, 133, 161, 83, 93, 121, 105, 106, 140, 101, 124, 148, 131, 101, 90, 90, 100, 129, 100, 94, 96, 89, 144, 100, 107, 90, 137, 133, 97, 84, 99, 142, 126, 132, 144, 124, 112, 111, 169, 151, 132, 169, 127, 120, 162, 121, 170, 111, 124, 99, 102, 75, 120, 139, 110, 138, 40, 70, 138, 137, 123, 133, 161, 83, 93, 121, 105, 106, 140, 101, 124, 148, 131, 101, 90, 90, 100, 129, 100, 94, 96, 89, 144, 100, 107, 90, 137, 133, 97, 84, 99, 142, 126, 132, 144, 124, 112, 111, 169, 151, 132, 169, 127, 120, 101, 141, 99, 139, 132, 93, 136, 127, 87, 96, 108, 120, 111, 130, 91, 237, 151, 76, 102, 64, 118, 84, 84, 105, 140, 144, 133, 93, 123, 147, 130, 149, 147, 121, 114, 105, 104, 98, 115, 93, 121, 105, 106, 140, 101, 124, 148, 131, 101, 90, 90, 100, 129, 100, 94, 96, 89, 144, 100, 107, 90, 137, 133, 97, 84, 99, 142, 126, 132, 144, 124, 112, 111, 169, 151, 132, 169, 127, 120, 101, 141, 99, 139, 132, 93, 136, 127]
11 # 組距
12 bin_width = 8
13 max_value = max(data)
14 min_value = min(data)
15 
16 bins = (max_value - min_value)//bin_width
17 
18 # 實際組距
19 real_width = (max_value - min_value)/bins
20 
21 # 設置大小
22 fig = plt.figure(figsize=(20,8))
23 plt.hist(data, bins)
24 print([min_value + i*bin_width for i in range(bins)])
25 # x軸刻度
26 plt.xticks([min_value + i*real_width for i in range(bins)], rotation=45)
27 plt.grid()
28 plt.show()

須要注意的點:

1.組數的選擇

    組數要適當,較少會有太大的統計偏差,太多規律不明顯。

     當數據在100之內時,按數據多少通常分5-12組

      當數據較多時能夠按照組距進行分組

       組距:是指每組的兩個端點的距離

      組數:=極差/組距 = (最大數據-最小數據)/組距

2.x軸刻度

   正常狀況下實際組距會是小數,因此刻度須要按照實際組距來,不然或者圖形偏移的狀況

   實際組距=極差/組數

    刻度列表=[最小數據+實際組距*i for i in range(組數+1)]

3.頻數直方圖與頻率直方圖

        頻率分佈直方圖縱軸表示頻率/組距,橫軸表示哥組組距,若求某一組的頻率,就用縱軸的頻率/組距*橫軸的組距,即得該組頻率。

        頻率 = 頻數/數據總數

問題2

美國人口普查發現有1.24億人在外工做。根據他們從家到上班地點所須要的時間,經過抽樣統計出了下表的數據,這些數據能繪製成直方圖嗎?

1 interval = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 60, 90, 150]
2 width = [5, 5, 5, 5, 5, 5, 5, 5, 5, 15, 30, 60]
3 quantity = [4180, 13687, 18618, 19634, 17981, 7190, 16369, 3212, 4122, 9200, 6461, 3435]
4 # 數據來源:https://en.wikipedia.org/wiki/Histogram

思考這個數據能繪製直方圖嗎?

給出的數據是統計以後的數據,因此爲了達到直方圖的效果,須要繪製條形圖。

結論:通常來講可以使用plthist方法繪製直方圖的是那些沒有統計過的原始數據

 1  代碼
 2 import matplotlib as mpl
 3 import matplotlib.pyplot as plt
 4 
 5 # 設置中文
 6 mpl.rcParams['font.sans-serif'] = ['Fangsong']
 7 mpl.rcParams['font.size'] = 16
 8 # 用條形圖模擬直方圖
 9 # 數據
10 interval = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 60, 90, 150]
11 width = [5, 5, 5, 5, 5, 5, 5, 5, 5, 15, 30, 60]
12 quantity = [4180, 13687, 18618, 19634, 17981, 7190, 16369, 3212, 4122, 9200, 6461, 3435]
13 
14 # 畫圖
15 plt.figure(figsize=(20,8))
16 for i in range(len(width)):
17     plt.bar([interval[i]+width[i]/2], [quantity[i]], width=width[i], color='orange')
18 # plt.bar(interval[1:], quantity, width=5)
19 
20 # 刻度
21 plt.xticks(interval)
22 
23 # x軸 ,y周的信息
24 
25 plt.show()

其餘圖形

matplotlib還能夠畫其餘圖形,官網有詳細案例,以及代碼,在工做中若有須要,再進行查閱。

官網地址:https://matplotlib.org/gallery/index.html

相關文章
相關標籤/搜索