第三章:繪制統計圖形


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 # 柱狀圖中柱體標簽值
 9 x = [1,2,3,4,5]
10 
11 # 柱狀圖中柱體的高度
12 y = [6,10,4,5,1]
13 
14 # ========================柱狀圖=========================
15 plt.bar(x,                                  # 柱體X軸標簽值
16         y,                                  # 柱體的高度
17         align="center",                     # 柱體對齊樣式
18         color="b",                          # 柱體顏色
19         tick_label=["A","B","C","D","E"],   # 刻度標簽值
20         alpha=0.6)                          # 柱體透明度
21 plt.xlabel("測試難度")
22 plt.ylabel("試卷份數")
23 
24 # 繪制網格線
25 plt.grid(axis="x",                          # 網格在x軸上
26          ls=":",                            # 網格樣式
27          color="r",                         # 網格顏色
28          alpha=0.3)                         # 網格透明度
29 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 # 柱狀圖中柱體標簽值
 9 x = [1,2,3,4,5]
10 
11 # 柱狀圖中柱體的高度
12 y = [6,10,4,5,1]
13 
14 # ========================條形圖=========================
15 plt.barh(x,                                 # 條形圖X軸標簽值
16         y,                                  # 條形圖的寬度
17         align="center",                     # 柱體對齊樣式
18         color="b",                          # 條形圖顏色
19         tick_label=["A","B","C","D","E"],   # 刻度標簽值
20         alpha=0.6)                          # 條形圖透明度
21 plt.xlabel("試卷份數")
22 plt.ylabel("測試難度")
23 
24 # 繪制網格線
25 plt.grid(axis="x",                          # 網格在x軸上
26          ls=":",                            # 網格樣式
27          color="r",                         # 網格顏色
28          alpha=0.3)                         # 網格透明度
29 plt.show()

 

 

 3、堆積柱狀圖

 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 x = [1,2,3,4,5]
10 
11 # 柱狀圖中柱體的高度(兩份試卷)
12 y = [6,10,4,5,1]
13 y1 = [2,6,3,8,5]
14 
15 # ========================堆積柱狀圖=========================
16 plt.bar(x,                                  # 柱體X軸標簽值
17         y,                                  # 柱體的高度
18         align="center",                     # 柱體對齊樣式
19         color="b",                          # 柱體顏色
20         tick_label=["A","B","C","D","E"],   # 刻度標簽值
21         alpha=0.6,                          # 柱體透明度
22         label="班級A")
23 plt.bar(x,                                  # 柱體X軸標簽值
24         y1,                                 # 柱體的高度
25         bottom=y,                           # 柱狀圖的起始位置
26         align="center",                     # 柱體對齊樣式
27         color="c",                          # 柱體顏色
28         alpha=0.6,                          # 柱體透明度
29         label="班級B")
30 plt.xlabel("測試難度")
31 plt.ylabel("試卷份數")
32 
33 # 添加圖例
34 plt.legend()
35 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 x = [1,2,3,4,5]
10 
11 # 柱狀圖中柱體的高度(兩份試卷)
12 y = [6,10,4,5,1]
13 y1 = [2,6,3,8,5]
14 
15 # ========================堆積條形圖=========================
16 plt.barh(x,                                 # 條形圖X軸標簽值
17         y,                                  # 條形圖的寬度
18         align="center",                     # 條形圖對齊樣式
19         color="b",                          # 條形圖顏色
20         tick_label=["A","B","C","D","E"],   # 刻度標簽值
21         alpha=0.6,                          # 條形圖透明度
22         label="班級A")
23 plt.barh(x,                                 # 條形圖X軸標簽值
24         y1,                                 # 條形圖的寬度
25         left=y,                             # 條形圖的起始位置
26         align="center",                     # 條形圖對齊樣式
27         color="c",                          # 條形圖顏色
28         alpha=0.6,                          # 條形圖透明度
29         label="班級B")
30 plt.xlabel("試卷份數")
31 plt.ylabel("測試難度")
32 
33 # 添加圖例
34 plt.legend()
35 plt.show()

 

 

 5、多數據並列柱狀圖

 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 x = np.arange(5)
 9 y = [6,10,4,5,1]
10 y1 = [2,6,3,8,5]
11 
12 # =================多數據並列柱狀圖=================
13 plt.bar(x=x,            # x軸坐標的刻度
14         height=y,       # 柱狀圖的高度
15         width=0.35,     # 柱狀圖的寬度
16         color="c",      # 柱狀圖的顏色
17         align="center", # 柱狀圖的對齊樣式
18         label="班級A",  # 柱狀圖的標簽
19         alpha=0.5)      # 柱狀圖的透明度
20 plt.bar(x=x+0.35,
21         height=y1,
22         width=0.35,
23         color="b",
24         align="center",
25         label="班級B",
26         alpha=0.5)
27 plt.xlabel("測試難度")
28 plt.ylabel("試卷份數")
29 plt.xticks(ticks=x+0.35/2,              # 兩個柱狀圖的中間
30            labels=["A","B","C","D","E"])# 在這兩個柱狀圖中間用標簽標示
31 # 顯示圖例
32 plt.legend()
33 plt.show()

 

 

 6、多數據並列條狀圖

 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 x = np.arange(5)
 9 y = [6,10,4,5,1]
10 y1 = [2,6,3,8,5]
11 
12 # =================多數據並列條狀圖=================
13 plt.barh(y=x,           # x軸坐標的刻度
14         width=y,        # 柱狀圖的寬度
15         height=0.35,    # 柱狀圖的高度
16         color="c",      # 柱狀圖的顏色
17         align="center", # 柱狀圖的對齊樣式
18         label="班級A",  # 柱狀圖的標簽
19         alpha=0.5)      # 柱狀圖的透明度
20 plt.barh(y=x+0.35,
21         width=y1,
22         height=0.35,
23         color="b",
24         align="center",
25         label="班級B",
26         alpha=0.5)
27 plt.xlabel("試卷份數")
28 plt.ylabel("測試難度")
29 plt.yticks(ticks=x+0.35/2,              # 兩個柱狀圖的中間
30            labels=["A","B","C","D","E"])# 在這兩個柱狀圖中間用標簽標示
31 # 顯示圖例
32 plt.legend()
33 plt.show()

 

 7、hatch柱狀圖的填充樣式

 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 = [1,2,3,4,5]
 9 y = [6,10,4,5,1]
10 # ======================hatch柱狀圖的填充樣式=================
11 plt.bar(x=x,                              # X軸上的刻度
12         height=y,                         # 柱狀圖的高度
13         align="center",                   # 柱狀圖的對齊樣式
14         color="c",                        # 柱狀圖的顏色
15         tick_label=["A","B","C","D","E"], # 柱狀圖X軸的替換標簽
16         hatch="*")                        # 柱狀圖的填充樣式,可選/,|,\\,-,*等
17 plt.xlabel("測試難度")
18 plt.ylabel("試卷份數")
19 plt.show()

 

 8、堆積折線圖

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 x = np.arange(1,6,1)
 5 y = [0,4,3,5,6]
 6 y1 = [1,3,4,2,7]
 7 y2 = [3,4,1,6,5]
 8 
 9 labels = ["RedPlanet","GreenPlanet","BluePlanet"]
10 colors = ["r","g","b"]
11 
12 # ==================堆積折線圖=====================
13 plt.stackplot(x,                # X軸坐標刻度
14               y,                # 紅色堆積塊數據
15               y1,               # 綠色堆積塊數據
16               y2,               # 藍色堆積塊數據
17               labels=labels,    # 堆積塊標簽
18               colors=colors)    # 堆積塊填充顏色
19 plt.grid(axis="y")
20 plt.legend(loc="upper left")
21 plt.show()

 

 9、broken_barh繪制間斷條形圖

 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 # =====================broken_barh繪制間斷條形圖====================
10 plt.broken_barh([(30,100),              # 起點從x軸數值為30的地方沿X軸正方形移動100個單位
11                  (180,50),
12                  (260,70)],
13                  (20,8),                # 起點從Y軸數值為20的地方沿Y軸正方形移動8個單位
14                 facecolors="#1f78b4")   # 填充顏色
15 plt.broken_barh([(60,90),
16                  (190,20),
17                  (230,30),
18                  (280,60)],
19                 (10,8),
20                 facecolors=("c","r","g","b"))
21 plt.xlim(0,360)
22 plt.ylim(5,35)
23 plt.xlabel("演出時間")
24 plt.xticks(np.arange(0,361,60))
25 plt.yticks(ticks=[15,25],labels=["歌劇院A","歌劇院B"])
26 plt.grid(ls="-",color="gray")
27 plt.title("不同地區的歌劇院演出時間比較")
28 plt.show()

 

 10、step繪制階梯圖

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 # 返回10個指定間隔(1-10)內的等距數字
 5 x = np.linspace(1,10,10)
 6 y = np.sin(x)
 7 
 8 # =======================step繪制階梯圖=========================
 9 plt.step(x,
10          y,
11          color="c",  # 線條顏色
12          where="pre",# 表示在X軸上的取值對應到Y軸上的數值向左側相鄰點繪制水平線(左開右閉)
13          # where="post",# 表示在X軸上的取值對應到Y軸上的數值向右側相鄰點繪制水平線(左閉右開)
14          lw=2)       # 線條寬度
15 plt.xlim(0,11)
16 plt.xticks(np.arange(1,11,1))
17 plt.ylim(-1,1)
18 plt.show()

 

 11、hist直方圖

# ========================================定量數據的分布展示(連續)=========================================
import  matplotlib
import  matplotlib.pyplot as plt
import numpy as np

# 顯示中文標識
matplotlib.rcParams["font.sans-serif"] = ["SimHei"]
matplotlib.rcParams["axes.unicode_minus"] = False

# 隨機返回100個0到100的整形數組
scoresT = np.random.randint(0,100,100)

# 從0到101當中確定10個柱體個數,如[0,10),[10,20)...[90,100]
bins = range(0,101,10)

# ===================hist直方圖====================
plt.hist(x=scoresT,     # 連續型輸入數據
         bins=bins,     # 用於確定柱體的個數或柱體的邊緣范圍
         color="c",     # 柱體填充顏色
         histtype="bar",# 柱體類型
         rwidth=10)     # 柱體寬度
plt.xlabel("測試成績")
plt.ylabel("學生人數")
plt.show()

 

 12、hist堆積直方圖

 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 # 隨機返回100個0到100的整形數組
10 scoresT1 = np.random.randint(0,100,100)
11 scoresT2 = np.random.randint(0,100,100)
12 
13 x = [scoresT1,scoresT2]
14 color = ["c","r"]
15 labels = ["班級A","班級B"]
16 
17 # 從0到101當中確定10個柱體個數,如[0,10),[10,20)...[90,100]
18 bins = range(0,101,10)
19 
20 # ===================hist堆積直方圖====================
21 plt.hist(x=x,           # 連續型輸入數據
22          bins=bins,     # 用於確定柱體的個數或柱體的邊緣范圍
23          color=color,   # 柱體填充顏色
24          histtype="bar",# 柱體類型
25          rwidth=10,     # 柱體寬度
26          stacked=True,  # 表示堆積直方圖,若為FALSE則直方圖並排而不是堆積
27          label=labels)
28 plt.xlabel("測試成績")
29 plt.ylabel("學生人數")
30 plt.title("不同班級的測試成績的直方圖")
31 plt.legend(loc="upper left")
32 plt.show()

 

 13、hist堆積階梯型直方圖

 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 # 隨機返回100個0到100的整形數組
10 scoresT1 = np.random.randint(0,100,100)
11 scoresT2 = np.random.randint(0,100,100)
12 
13 x = [scoresT1,scoresT2]
14 color = ["c","r"]
15 labels = ["班級A","班級B"]
16 
17 # 從0到101當中確定10個柱體個數,如[0,10),[10,20)...[90,100]
18 bins = range(0,101,10)
19 
20 # ===================hist堆積階梯型直方圖====================
21 plt.hist(x=x,           # 連續型輸入數據
22          bins=bins,     # 用於確定柱體的個數或柱體的邊緣范圍
23          color=color,   # 柱體填充顏色
24          histtype="stepfilled",# 柱體類型
25          rwidth=10,     # 柱體寬度
26          stacked=True,  # 表示堆積直方圖,若為FALSE則直方圖並排而不是堆積
27          label=labels)
28 plt.xlabel("測試成績")
29 plt.ylabel("學生人數")
30 plt.title("不同班級的測試成績的直方圖")
31 plt.legend(loc="upper left")
32 plt.show()

 

 14、pie繪制分裂餅圖

 1 # ========================================定性數據的分布展示(離散)=========================================
 2 import  matplotlib
 3 import  matplotlib.pyplot as plt
 4 
 5 # 顯示中文標識
 6 matplotlib.rcParams["font.sans-serif"] = ["SimHei"]
 7 matplotlib.rcParams["axes.unicode_minus"] = False
 8 
 9 # 標記每份餅片的文本標簽內容
10 labels = ["A難度水平","B難度水平","C難度水平","D難度水平"]
11 students = [0.35,0.15,0.20,0.3]     # 難度占比
12 colors = ["r","g","b","c"]          # 餅片的填充顏色
13 explode = (0.3,0.1,0.1,0.1)         # 餅片邊緣偏離半徑的百分比
14 
15 # ========================pie繪制分裂餅圖==========================
16 plt.pie(x=students,                 # 難度占比
17         explode=explode,            # 餅片邊緣偏離半徑的百分比
18         labels=labels,              # 標記餅片的文本標簽內容
19         autopct="%3.1f%%",          # 餅片文本標簽內容對呀的數值百分比樣式
20         startangle=45,              # 從x軸作為其實位置,第一個餅片逆時針旋轉的角度
21         shadow=True,                # 是否繪制餅片的陰影
22         colors=colors)              # 每份餅片的顏色
23 plt.title("選擇不同難度測試試卷的學生百分比")
24 plt.show()

 

 15、pie繪制非分裂餅圖

 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 labels = ["A難度水平","B難度水平","C難度水平","D難度水平"]
10 students = [0.35,0.15,0.20,0.3]     # 難度占比
11 colors = ["r","g","b","c"]          # 餅片的填充顏色
12 
13 # ========================pie繪制非分裂餅圖==========================
14 plt.pie(x=students,                 # 難度占比
15         labels=labels,              # 標記餅片的文本標簽內容
16         autopct="%3.1f%%",          # 餅片文本標簽內容對呀的數值百分比樣式
17         startangle=45,              # 從x軸作為其實位置,第一個餅片逆時針旋轉的角度
18         pctdistance=0.7,            # 控制百分比顯示位置(以半徑長度比例值作為顯示位置依據)
19         labeldistance=1.2,          # 控制文本標簽顯示位置(以半徑長度比例值作為顯示位置依據)
20         colors=colors,              # 每份餅片的顏色
21         )
22 plt.title("選擇不同難度測試試卷的學生百分比")
23 plt.show()

 

 16、內嵌餅圖

 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 elements = ["面粉","砂糖","奶油","草莓醬","堅果"]  # 面包的主要成分
10 weight1 = [40,15,20,10,15]                         # 面包主要成分的比重1
11 weight2 = [30,25,15,20,10]                         # 面包主要成分的比重1
12 
13 outer_colors = ["r","g","b","c","m"]               # 內嵌餅圖外層顏色
14 inner_colors = ["r","g","b","c","m"]               # 內嵌餅圖內層顏色
15 
16 # ==========================內嵌餅圖(外層)============================
17 # wedges:餅片。texts:分類標簽的文本列表。autotexts:百分比部分的文本列表
18 wedges1,texts1,autotexts1 = plt.pie(x=weight1,                                  # 難度占比
19                                     autopct="%3.1f%%",                          # 餅片文本標簽內容對呀的數值百分比樣式
20                                     radius=1,                                   # 外層餅圖半徑
21                                     pctdistance=0.85,
22                                     colors=outer_colors,                        # 外層餅圖顏色
23                                     textprops=dict(color="w"),                  # 設置餅圖中顯示百分比例數字的字體顏色
24                                     wedgeprops=dict(width=0.3,edgecolor="w"))   # 環的寬度,還有環的最外側的邊界顏色
25 # ==========================內嵌餅圖(內層)============================
26 wedges2,texts2,autotexts2 = plt.pie(x=weight2,
27                                     autopct="%3.1f%%",
28                                     radius=0.7,
29                                     pctdistance=0.75,
30                                     colors=inner_colors,
31                                     textprops=dict(color="w"),
32                                     wedgeprops=dict(width=0.3,edgecolor="w"))
33 # 設置圖例
34 plt.legend(wedges1,                             # 餅片數據
35            elements,                            # 面包的主要成分
36            fontsize=12,                         # 圖例字體大小
37            title="配料表",                      # 圖例標題
38            loc="center left",                   # 圖例所在的位置(左中)
39            bbox_to_anchor=(0.91,0,0.3,1))       # 確定圖例在軸的相對位置,第一個參數是x,第二個是y
40 
41 # 設置百分比文本樣式
42 plt.setp(autotexts1,            # 外層餅圖百分比
43          size=15,               # 外層餅圖百分比字體大小
44          weight="bold")         # 外層餅圖百分比字體樣式
45 plt.setp(autotexts2,
46          size=15,
47          weight="bold")
48 
49 # 設置分類標簽樣式
50 plt.setp(texts1,                # 分類標簽的文本列表
51          size=12)               # 分類標簽的文本列表字體大小
52 plt.title("不同果醬面包配料比例表的比較")
53 plt.show()

 

 17、boxplot繪制箱線

 1 import  matplotlib
 2 import  matplotlib.pyplot as plt
 3 import numpy as np
 4 # 顯示中文標識
 5 matplotlib.rcParams["font.sans-serif"] = ["SimHei"]     # 設置字體為SimHei
 6 matplotlib.rcParams["axes.unicode_minus"] = False       # 放棄使用unicode_minus
 7 
 8 testA = np.random.randn(5000)
 9 testB = np.random.randn(5000)
10 
11 testList = [testA,testB]
12 labels = ["隨機數生成器AlphaRM","隨機數生成器BetaRMB"]
13 colors = ["c","r"]
14 
15 whis = 1.6
16 width = 0.35
17 
18 # ==========================boxplot繪制箱線圖==============================
19 bplot = plt.boxplot(x=testList,         # 繪制箱線圖輸入的數據
20                     whis=whis,          # 四分位間距倍數,用來確定箱須包含數據范圍的大小
21                     widths=width,       # 設置箱體的寬度
22                     sym="o",            # 離散值群的標記樣式
23                     labels=labels,      # 繪制每個數據集的刻度標簽
24                     notch=True,         # 設置該參數會使箱體上下呈V型
25                     patch_artist=True)  # 是否給箱體添加顏色
26 for patch,color in zip(bplot["boxes"],colors):
27     patch.set_facecolor(color)
28 
29 plt.ylabel("隨機數值")
30 plt.title("生成器抗干擾能力的穩定性比較")
31 
32 plt.grid(axis="y",
33          ls=":",
34          lw=1,
35          color="gray",
36          alpha=0.4)
37 plt.show()

 

 18、boxplot繪制水平箱線圖

 1 import  matplotlib
 2 import  matplotlib.pyplot as plt
 3 import numpy as np
 4 # 顯示中文標識
 5 matplotlib.rcParams["font.sans-serif"] = ["SimHei"]     # 設置字體為SimHei
 6 matplotlib.rcParams["axes.unicode_minus"] = False       # 放棄使用unicode_minus
 7 
 8 x = np.random.randn(1000)
 9 
10 # ==========================boxplot繪制水平箱線圖==============================
11 bplot = plt.boxplot(x=x,                # 繪制箱線圖輸入的數據
12                     vert=False)         # 是否繪制垂直水平箱線圖,False為水平
13 
14 plt.xlabel("隨機數值")
15 plt.yticks([1],["隨機數生成器AlphaRM"],rotation=90)
16 plt.title("生成器抗干擾能力的穩定性比較")
17 
18 plt.grid(axis="x",
19          ls=":",
20          lw=1,
21          color="gray",
22          alpha=0.4)
23 plt.show()

 

 19、boxplot不繪制離群值水平箱線圖

 1 import  matplotlib
 2 import  matplotlib.pyplot as plt
 3 import numpy as np
 4 # 顯示中文標識
 5 matplotlib.rcParams["font.sans-serif"] = ["SimHei"]     # 設置字體為SimHei
 6 matplotlib.rcParams["axes.unicode_minus"] = False       # 放棄使用unicode_minus
 7 
 8 x = np.random.randn(1000)
 9 
10 # ==========================boxplot不繪制離群值水平箱線圖==============================
11 bplot = plt.boxplot(x=x,                # 繪制箱線圖輸入的數據
12                     showfliers=False,   # 不繪制離群值
13                     vert=False)         # 是否繪制垂直水平箱線圖,False為水平
14 
15 plt.xlabel("隨機數值")
16 plt.yticks([1],["隨機數生成器AlphaRM"],rotation=90)
17 plt.title("生成器抗干擾能力的穩定性比較")
18 
19 plt.grid(axis="x",
20          ls=":",
21          lw=1,
22          color="gray",
23          alpha=0.4)
24 plt.show()

 

 20、errorbar誤差棒

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 x = np.linspace(0.1,0.6,10)
 5 y = np.exp(x)
 6 
 7 error = 0.05+0.15*x
 8 lower_error  = error
 9 upper_error = 0.3*error
10 error_limit = [lower_error,upper_error]
11 
12 # ======================errorbar誤差棒============================
13 plt.errorbar(x=x,               # x軸上的數據點位置
14              y=y,               # y軸上的數據點位置
15              yerr=error_limit,  # 單一數值非對稱形式誤差范圍
16              fmt=":o",          # 數據點之間的標記樣式和連接樣式
17              ecolor="y",        # 誤差棒的顏色
18              elinewidth=4,      # 誤差棒線條的粗細
19              ms=5,              # 數據點大小
20              mfc="c",           # 數據點標記顏色
21              mec="r",           # 數據點標記邊緣顏色
22              capthick=1,        # 誤差棒邊界橫杠的厚度
23              capsize=2)         # 誤差棒邊界橫杠的大小
24 plt.xlim(0,0.7)
25 plt.show()

 

 21、帶誤差棒的柱狀圖

 1 import  matplotlib
 2 import  matplotlib.pyplot as plt
 3 import numpy as np
 4 # 顯示中文標識
 5 matplotlib.rcParams["font.sans-serif"] = ["SimHei"]     # 設置字體為SimHei
 6 matplotlib.rcParams["axes.unicode_minus"] = False       # 放棄使用unicode_minus
 7 
 8 x = np.arange(5)                                            # x 軸刻度
 9 y = [100,68,79,91,82]                                       # 芒果收割量
10 std_err = [7,2,6,10,5]                                      # 每個園區的誤差
11 error_attri = dict(elinewidth=2,ecolor="black",capsize=3)   # 誤差棒的屬性設置
12 tick_label=["園區1","園區2","園區3","園區4","園區5"]
13 
14 # =========================帶誤差棒的柱狀圖==============================
15 plt.bar(x,                         # X軸上的刻度
16         y,                         # 芒果的收割量
17         color="c",                 # 柱狀圖的顏色
18         width=0.6,                 # 柱狀圖的寬度
19         align="center",            # 柱狀圖的樣式
20         yerr=std_err,              # 柱狀圖當中帶誤差棒的設置
21         error_kw=error_attri,      # 誤差棒的屬性設置,如顏色粗細等
22         tick_label=tick_label)     # 將x軸上的刻度進行替換
23 plt.xlabel("芒果種植區")
24 plt.ylabel("收割量")
25 plt.title("不同芒果種植區的單次收割量")
26 plt.grid(True,axis="y",ls=":",color="gray",alpha=0.4)
27 plt.show()

 

 22、帶誤差棒的條形圖

 1 import  matplotlib
 2 import  matplotlib.pyplot as plt
 3 import numpy as np
 4 # 顯示中文標識
 5 matplotlib.rcParams["font.sans-serif"] = ["SimHei"]     # 設置字體為SimHei
 6 matplotlib.rcParams["axes.unicode_minus"] = False       # 放棄使用unicode_minus
 7 
 8 x = np.arange(5)
 9 y = [1200,2400,1800,2200,1600]
10 std_err = [150,100,180,130,80]
11 
12 bar_height = 0.6
13 colors = ["r","g","b","c","m"]
14 
15 plt.barh(x,
16          y,
17          height=bar_height,
18          color=colors,
19          align="center",
20          xerr=std_err,
21          tick_label=["家庭","小說","心理","科技","兒童"])
22 plt.xlabel("訂購數量")
23 plt.ylabel("圖書種類")
24 plt.title("大型圖書展銷會的不同圖書種類的采購情況")
25 plt.grid(True,axis="x",ls=":",color="r",alpha=0.4)
26 plt.xlim(0,2600)
27 plt.show()

 

 23、帶誤差棒的多數據並列數據柱狀圖

 1 import  matplotlib
 2 import  matplotlib.pyplot as plt
 3 import numpy as np
 4 # 顯示中文標識
 5 matplotlib.rcParams["font.sans-serif"] = ["SimHei"]     # 設置字體為SimHei
 6 matplotlib.rcParams["axes.unicode_minus"] = False       # 放棄使用unicode_minus
 7 
 8 x = np.arange(5)                                            # x 軸刻度
 9 y1 = [100,68,79,91,82]                                      # 芒果收割量
10 y2 = [120,75,70,78,85]
11 std_err1 = [7,2,6,10,5]                                     # 每個園區的誤差
12 std_err2 = [5,1,4,8,9]
13 error_attri = dict(elinewidth=2,ecolor="black",capsize=3)   # 誤差棒的屬性設置
14 tick_label=["園區1","園區2","園區3","園區4","園區5"]
15 
16 # =========================帶誤差棒的多數據並列數據柱狀圖==============================
17 plt.bar(x,                         # X軸上的刻度
18         y1,                        # 芒果的收割量
19         color="c",                 # 柱狀圖的顏色
20         width=0.4,                 # 柱狀圖的寬度
21         align="center",            # 柱狀圖的樣式
22         yerr=std_err1,             # 柱狀圖當中帶誤差棒的設置
23         error_kw=error_attri,      # 誤差棒的屬性設置,如顏色粗細等
24         label="2010")              # 2010年的數據
25 plt.bar(x+0.4,                     # X軸上的刻度
26         y2,                        # 芒果的收割量
27         color="m",                 # 柱狀圖的顏色
28         width=0.4,                 # 柱狀圖的寬度
29         align="center",            # 柱狀圖的樣式
30         yerr=std_err2,             # 柱狀圖當中帶誤差棒的設置
31         error_kw=error_attri,      # 誤差棒的屬性設置,如顏色粗細等
32         label="2013")              # 2013年的數據
33 
34 plt.xlabel("芒果種植區")
35 plt.ylabel("收割量")
36 plt.xticks(x+0.4/2,tick_label)
37 plt.title("不同芒果種植區的單次收割量")
38 plt.grid(True,axis="y",ls=":",color="gray",alpha=0.4)
39 plt.legend()
40 plt.show()

 

 24、帶誤差棒的堆疊柱狀圖

 1 import  matplotlib
 2 import  matplotlib.pyplot as plt
 3 import numpy as np
 4 # 顯示中文標識
 5 matplotlib.rcParams["font.sans-serif"] = ["SimHei"]     # 設置字體為SimHei
 6 matplotlib.rcParams["axes.unicode_minus"] = False       # 放棄使用unicode_minus
 7 
 8 x = np.arange(5)
 9 y1 = [1200,2400,1800,2200,1600]
10 y2 = [1050,2100,1300,1600,1340]
11 std_err1 = [150,100,180,130,80]
12 std_err2 = [120,110,170,150,120]
13 bar_width = 0.6
14 tick_label=["家庭","小說","心理","科技","兒童"]
15 error_attri = dict(elinewidth=2,ecolor="black",capsize=0)   # 誤差棒的屬性設置
16 
17 # ============================帶誤差棒的堆疊柱狀圖==============================
18 plt.bar(x,                      # X軸刻度
19         y1,                     # 地區1的數據
20         width=bar_width,        # 柱狀圖寬度
21         color="c",              # 柱狀圖顏色
22         align="center",         # 柱狀圖樣式
23         yerr=std_err1,          # 地區1的誤差
24         label="地區1",          # 標簽
25         error_kw=error_attri)   # 誤差棒的屬性,如顏色,粗細
26 plt.bar(x,
27         y2,
28         width=bar_width,
29         bottom=y1,              # 在地區1的柱狀圖的基礎上繼續畫柱狀圖
30         color="m",
31         align="center",
32         yerr=std_err2,
33         label="地區2",
34         error_kw=error_attri)
35 plt.xlabel("圖書種類")
36 plt.ylabel("訂購數量")
37 plt.title("大型圖書展銷會的不同圖書種類的采購情況")
38 plt.grid(True,axis="x",ls=":",color="r",alpha=0.4)
39 plt.xticks(x,tick_label)
40 plt.legend()
41 plt.show()

 


免責聲明!

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



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