第二章:使用統計函數繪制簡單圖形


1、繪制條形圖

 1 import  matplotlib
 2 import  matplotlib.pyplot as plt
 3 
 4 # 顯示中文標識
 5 matplotlib.rcParams["font.sans-serif"] = ["SimHei"]
 6 matplotlib.rcParams["axes.unicode_minus"] = False
 7 
 8 # X/Y軸刻度
 9 x = [1,2,3,4,5,6,7,8]
10 y = [3,1,4,5,8,9,7,2]
11 
12 # ==============繪制條形圖=================
13 plt.bar(x,
14         y,
15         align="center",                                 # 排列方式
16         color="c",                                      # 填充顏色
17         tick_label=["q","a","c","e","r","j","b","p"],   # 將X軸上的刻度替換成指定編號
18         hatch="/")                                      # 圖形填充值,可取值為: / ,  , | , - , + , x , o , O , . , *
19 
20 # X/Y軸標簽
21 plt.xlabel("箱子編號")
22 plt.ylabel("箱子重量(kg)")
23 
24 plt.show()

 

 2、繪制水平條形圖

 1 import  matplotlib
 2 import  matplotlib.pyplot as plt
 3 
 4 # 顯示中文標識
 5 matplotlib.rcParams["font.sans-serif"] = ["SimHei"]
 6 matplotlib.rcParams["axes.unicode_minus"] = False
 7 
 8 # X/Y軸刻度
 9 x = [1,2,3,4,5,6,7,8]
10 y = [3,1,4,5,8,9,7,2]
11 
12 # ==============繪制水平條形圖=================
13 plt.barh(x,
14         y,
15         align="center",                                 # 排列方式
16         color="c",                                      # 填充顏色
17         tick_label=["q","a","c","e","r","j","b","p"],   # 將X軸上的刻度替換成指定編號
18         hatch="/")                                      # 圖形填充值,可取值為: / ,  , | , - , + , x , o , O , . , *
19 
20 # X/Y軸標簽
21 plt.xlabel("箱子重量(kg)")
22 plt.ylabel("箱子編號")
23 
24 plt.show()

 

 3、繪制直方圖

 1 import  matplotlib
 2 import  matplotlib.pyplot as plt
 3 import numpy as np
 4 
 5 # 顯示中文標識
 6 matplotlib.rcParams["font.sans-serif"] = ["SimHei"]
 7 matplotlib.rcParams["axes.unicode_minus"] = False
 8 
 9 # 隨機生成0,9的100個整數
10 x = np.random.randint(0,10,100)
11 bins = range(0,11,1)
12 
13 # ================繪制直方圖================
14 plt.hist(x=x,                       # 分布數據
15          bins=bins,                 # 指定共有幾個箱子,也就是有幾條條形圖
16          color="g",                 # 條形圖顏色
17          histtype="barstacked",     # 條形圖類型,可選bar,barstacked,step,stepfilled,默認為bar
18          align="mid",               # 直方圖樣式,可選 left mid right
19          rwidth=0.8,                # 柱子與柱子之間的距離,默認是0
20          alpha=0.6)                 # 透明度
21 # X/Y軸標簽
22 plt.xlabel("箱子重量(kg)")
23 plt.ylabel("銷售個數(個)")
24 
25 plt.show()

 

 4、繪制餅圖

 1 import  matplotlib
 2 import  matplotlib.pyplot as plt
 3 
 4 # 顯示中文標識
 5 matplotlib.rcParams["font.sans-serif"] = ["SimHei"]
 6 matplotlib.rcParams["axes.unicode_minus"] = False
 7 
 8 # 數據類型
 9 kinds = "簡易箱","保溫箱","行李箱","密封箱"
10 
11 # 每種數據的填充顏色
12 colors = ["r","g","b","c"]
13 
14 # 每種數據的占比
15 soldNums = [0.05,0.45,0.15,0.35]
16 
17 # ===================繪制餅圖====================
18 plt.pie(x=soldNums,         # 每種數據的占比
19         labels=kinds,       # 餅圖外側顯示的說明文字
20         autopct="%3.1f%%",  # 控制餅圖內百分比設置,'%1.1f'指小數點前后位數(沒有用空格補齊)
21         startangle=60,      # 起始繪制角度,默認圖是從x軸正方向逆時針畫起,如設定=90則從y軸正方向畫起
22         colors=colors)      # 每快餅的填充顏色
23 
24 # 標題
25 plt.title("不同箱子的銷售占比")
26 plt.show()

 

 5、在極坐標軸上繪制折線圖

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 # 從0到2pi取12個數.endpoint:如果為False則最后一個數不為2pi,如果為True則最后一個數為2pi
 5 theta = np.linspace(start=0.0,stop=2*np.pi,num=12,endpoint=False)
 6 
 7 # 創建一個給定類型(12個)的數組,將其填充在一個均勻分布的隨機樣本[0, 1)中
 8 r = 30*np.random.rand(12)
 9 
10 # ===============在極坐標軸上繪制折線圖=================
11 plt.polar(theta,                # 每個標記所在的射線與極徑的夾角
12           r,                    # 每個標記到原點的距離
13           color="chartreuse",   # 顏色
14           linewidth=2,          # 線寬
15           marker="*",           # 標志點
16           mfc="b",              # 數據點的顏色
17           ms=10)                # 標志點大小
18 plt.show()

 

 6、繪制氣泡圖

 1 import matplotlib.pyplot as plt
 2 from matplotlib import cm
 3 import numpy as np
 4 
 5 # 生成指定維度(100維度)的服從標准正態分布的隨機數
 6 a = np.random.randn(100)
 7 b = np.random.randn(100)
 8 
 9 # ==================繪制氣泡圖===================
10 plt.scatter(x=a,                    # x軸上的數值
11             y=b,                    # y軸上的數值
12             s=np.power(10*a+20*b,2),# 散點標記的大小((數組a*10+數組b*20)的平方)
13             c=np.random.rand(100),  # 散點標記的顏色
14             cmap=cm.RdYlBu,         # 將浮點數映射成顏色的顏色映射率
15             marker="o")             # 標記點(氣泡)
16 plt.show()

 

 7、繪制棉棒圖

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 # 從0到2pi取20個數
 5 x = np.linspace(0.5,2*np.pi,20)
 6 
 7 # 生成指定維度(20維度)的服從標准正態分布的隨機數
 8 y = np.random.randn(20)
 9 
10 # ====================繪制棉棒圖=================
11 plt.stem(x,             # 指定棉棒的x軸基線上的位置
12          y,             # 繪制棉棒的長度
13          linefmt="-",   # 棉棒的樣式
14          markerfmt="o", # 棉棒末端的樣式
15          basefmt="-")   # 指定基線的樣式
16 plt.show()

 

 8、繪制箱線圖

 1 import  matplotlib
 2 import  matplotlib.pyplot as plt
 3 import numpy as np
 4 
 5 # 顯示中文標識
 6 matplotlib.rcParams["font.sans-serif"] = ["SimHei"]
 7 matplotlib.rcParams["axes.unicode_minus"] = False
 8 
 9 # 生成指定維度(1000維度)的服從標准正態分布的隨機數
10 x = np.random.randn(1000)
11 
12 # ===================繪制箱線圖=====================
13 plt.boxplot(x)
14 
15 plt.xticks([1],["隨機數生成器AlphaRM"])
16 
17 # y軸上的標簽
18 plt.ylabel("隨機數值")
19 
20 # 標題
21 plt.title("隨機數生成器抗干擾能力的穩定性")
22 
23 # 繪制網格線
24 plt.grid(axis="y",      # 在y軸上繪制網格線
25          ls=":",        # 網格線樣式
26          color="gray",  # 網格線顏色
27          alpha=0.4)     # 網格線透明度
28 plt.show()

 

 9、繪制誤差棒圖

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 # 從0.1到0.6區6個值
 5 x = np.linspace(0.1,0.6,6)
 6 
 7 # 指數函數
 8 y = np.exp(x)
 9 
10 # ===================繪制誤差棒圖==================
11 plt.errorbar(x=x,           # 數據點的水平位置
12              y=y,           # 數據點的垂直位置
13              fmt="bo:",     # 數據點的標記樣式以及相互之間連接線樣式
14              yerr=0.2,      # y軸方向的數據點的誤差計算方法
15              xerr=0.02,     # x軸方向的數據點的誤差計算方法
16              ecolor="r",    # 誤差棒的顏色
17              elinewidth=2,  # 誤差棒線條的粗細大小
18              capsize=10,    # 誤差棒邊界橫杠的大小
19              capthick=4,    # 誤差棒邊界橫杠的厚度
20              ms=10,         # 數據點的大小
21              mfc="g",       # 數據點的顏色
22              mec="m")       # 數據點邊緣的顏色
23 # x軸上的刻度
24 plt.xlim(0,0.7)
25 plt.show()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM