zoukankan      html  css  js  c++  java
  • 第四章:完善统计图形

    1、添加图例和标题

     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 # 在-2pi到2pi之间取200个数据点
     9 x = np.linspace(-2*np.pi,2*np.pi,200)
    10 y1 = np.sin(x)          # 正弦函数
    11 y2 = np.cos(x)          # 余弦函数
    12 
    13 # 绘制正弦余弦函数图形,并通过label将标签添加到图例当中
    14 plt.plot(x,y1,label=r"$sin(x)$")
    15 plt.plot(x,y2,label=r"$cos(x)$")
    16 
    17 # 添加图例
    18 plt.legend(loc="lower left")
    19 
    20 # 添加标题
    21 plt.title("正弦函数与余弦函数的折线图")
    22 
    23 plt.show()

     2、图例的样式展示调整

     1 import  matplotlib.pyplot as plt
     2 import numpy as np
     3 x = np.arange(0,2.1,0.1)
     4 y1 = np.power(x,3)
     5 y2 = np.power(x,2)
     6 y3 = np.power(x,1)
     7 
     8 # 绘制指数函数。ls:表示线条样式。lw:表示线条宽度,c:表示线条颜色,label:表示图例里的标签
     9 plt.plot(x,y1,ls="-",lw=2,c="b",label="$x^{3}$")
    10 plt.plot(x,y2,ls="--",lw=2,c="r",label="$x^{2}$")
    11 plt.plot(x,y3,ls="-",lw=2,c="y",label="$x^{1}$")
    12 
    13 # ===========================图例的样式展示调整===========================
    14 plt.legend(loc="upper left",            # 图例所在的位置
    15            bbox_to_anchor=(0.05,0.95),  # 线框位置参数
    16            ncol=3,                      # 设置图例分为3列展示
    17            title="power function",      # 图例标签内容标题参数
    18            shadow=True,                 # 线框阴影参数
    19            fancybox=True)               # 线框圆角处理参数
    20 plt.show()

     3、标题展示样式调整

     1 import  matplotlib.pyplot as plt
     2 import numpy as np
     3 
     4 x = np.linspace(-2,2,1000)
     5 y = np.exp(x)
     6 
     7 plt.plot(x,y,ls="-",lw=2,c="g")
     8 
     9 # ===========================标题展示样式调整==============================
    10 plt.title("center mode")
    11 plt.title("left mode",                          # 标题
    12           loc="left",                           # 标题所在的位置
    13           fontdict={"size":"xx-large",          # 字体大小
    14                     "color":"r",                # 字体颜色
    15                     "family":"Times New Roman"})# 字体类型
    16 
    17 plt.title("right mode",                         # 标题
    18           loc="right",                          # 标题位置
    19           family="Comic Sans MS",               # 字体
    20           size=20,                              # 字体大小
    21           style="oblique",                      # 字体风格样式
    22           color="c")                            # 字体颜色
    23 
    24 plt.show()

     4、带图例的饼图

    import  matplotlib
    import  matplotlib.pyplot as plt
    
    # 显示中文标识
    matplotlib.rcParams["font.sans-serif"] = ["SimHei"]     # 设置字体为SimHei
    matplotlib.rcParams["axes.unicode_minus"] = False       # 放弃使用unicode_minus
    
    elements = ["面粉","砂糖","奶油","草莓酱","坚果"]
    weight = [40,15,20,10,15]
    colors = ["r","g","b","c","m"]
    
    # wedges:饼片。texts:分类标签的文本列表。autotexts:百分比部分的文本列表
    wedges,texts,autotexts = plt.pie(weight,                    # 比例占比
                                     autopct="%3.1f%%",         # 每片饼叶的百分比
                                     textprops=dict(color="w"), # 设置饼图中显示百分比例数字的字体颜色
                                     colors=colors)             # 每片饼叶的颜色
    plt.legend(wedges,                          # 饼片数据在图例中的颜色
               elements,                        # 饼片的成分
               fontsize=12,                     # 图例的文字大小
               title="配料表",                  # 图例标题
               loc="center left",               # 图例的位置
               bbox_to_anchor=(0.91,0,0.3,1))   # 确定图例在轴的相对位置
    
    # 设置百分比文本样式
    plt.setp(autotexts,         # 饼图百分比
             size=15,           # 饼图百分比文字大小
             weight="bold")     # 饼图百分比字体
    
    # 设置分类标签样式
    plt.setp(texts,             # 分类标签的文本列表
             size=12)           # 分类标签的文本字体大小
    plt.title("果酱面包配料比例表")
    plt.show()

     5、调整刻度范围和刻度标签的方法

     1 import matplotlib.pyplot as plt
     2 import numpy as np
     3 
     4 # 从-2pi到2pi选取200个数据点
     5 x = np.linspace(-2*np.pi,2*np.pi,200)
     6 y = np.sin(x)
     7 
     8 # 在画布的第一个位置画正弦函数(211表示2行1列第1个画布)
     9 plt.subplot(211)
    10 plt.xlim(-2*np.pi,2*np.pi)  # 第一个图的x轴刻度范围
    11 plt.plot(x,y)
    12 
    13 # 在画布的第一个位置画正弦函数(212表示2行1列第2个画布)
    14 plt.subplot(212)
    15 plt.xlim(-2*np.pi,2*np.pi)  # 第二个图的x轴刻度范围
    16 plt.xticks([-2*np.pi,       # 将第一个数组内的刻度替换成第二个数组内的刻度
    17             -3*np.pi/2,
    18             -1*np.pi,
    19             -1*np.pi/2,
    20             0,
    21             np.pi/2,
    22             np.pi,
    23             3*np.pi/2,
    24             2*np.pi],
    25            [r"$-2pi$",
    26             r"$-3pi/2$",
    27             r"$-pi$",
    28             r"$-pi/2$",
    29             r"$0$",
    30             r"$pi/2$",
    31             r"$pi$",
    32             r"$3pi/2$",
    33             r"$2pi$"])
    34 plt.plot(x,y)
    35 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"]     # 设置字体为SimHei
     7 matplotlib.rcParams["axes.unicode_minus"] = False       # 放弃使用unicode_minus
     8 
     9 time = np.arange(1,11,0.5)
    10 machinePower = np.power(time,2)+0.7
    11 
    12 plt.plot(time,          # x轴使用时间年限
    13          machinePower,  # y轴机器功率
    14          linestyle="-", # 曲线样式
    15          linewidth=2,   # 曲线宽度
    16          color="red")   # 曲线颜色
    17 
    18 plt.xlim(10,1)          # 逆序设置坐标轴刻度
    19 
    20 plt.xlabel("使用年限")
    21 plt.ylabel("机器功率")
    22 
    23 plt.title("机器损耗曲线")
    24 
    25 plt.grid(ls=":",lw=1,color="g",alpha=0.5)
    26 plt.show()

     7、向统计图当中添加表格

     1 import  matplotlib
     2 import  matplotlib.pyplot as plt
     3 
     4 # 显示中文标识
     5 matplotlib.rcParams["font.sans-serif"] = ["SimHei"]     # 设置字体为SimHei
     6 matplotlib.rcParams["axes.unicode_minus"] = False       # 放弃使用unicode_minus
     7 
     8 labels = "A难度水平","B难度水平","C难度水平","D难度水平"
     9 students = [0.35,0.15,0.2,0.3]
    10 explode = (0.1,0.1,0.1,0.1)
    11 colors = ["r","g","b","m"]
    12 plt.pie(students,
    13         explode=explode,    # 饼片边缘偏离半径的百分比
    14         labels=labels,      # 饼片说明标签
    15         autopct="%1.1f%%",  # 数值百分比样式
    16         startangle=45,      # 第一个饼片逆时针旋转角度
    17         shadow=True,        # 有阴影设置
    18         colors=colors)      # 饼片颜色
    19 
    20 plt.title("选择不同难度测试试卷的学生百分比")
    21 
    22 colLabels = ["A难度水平","B难度水平","C难度水平","D难度水平"]
    23 rowLabels = ["学生选择试卷人数"]
    24 studentValues = [[350,150,200,300]]
    25 colColours = ["r","g","b","m"]
    26 
    27 plt.table(cellText=studentValues,   # 表格的数值
    28           cellLoc="center",         # 表格中的数据对齐方式
    29           colWidths=[0.2]*4,        # 表格每列的宽度
    30           colLabels=colLabels,      # 表格中每列的列名称
    31           colColours=colColours,    # 表格每列的列名称所在单元格的颜色
    32           rowLabels=rowLabels,      # 表格每行的行名称
    33           rowLoc="center",          # 表格每行的行名称对齐方式
    34           loc="bottom")             # 表格在画布中的位置
    35 
    36 plt.savefig("D:数据分析第二章")   # 保存图片
    37 plt.show()

  • 相关阅读:
    Firefly AIO-3399ProC开发板安装RKNN Toolkit 1.6.0开发环境
    用1kΩ电阻可以组合出多少个阻值?
    电气元件与电气控制的保护(PPT)
    MASM汇编DOS
    可免费解锁PDF的网站
    org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter和java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/jasper/servlet/JasperL
    访问联合类型中某个类型特有的属性或方法
    防止攻击者篡改外部脚本
    对 state 中的数组使用 v-model
    TS 定义一个最简单的字符串数组类型
  • 原文地址:https://www.cnblogs.com/zhaco/p/11542174.html
Copyright © 2011-2022 走看看