第三章:绘制统计图形

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()

猜你喜欢

转载自www.cnblogs.com/zhaco/p/11541430.html
今日推荐