zoukankan      html  css  js  c++  java
  • python 用 matplotlib 制作条形图参数详解 plt.barh()

    1、加载库

    import numpy as np
    import matplotlib as mpl
    import matplotlib.pyplot as plt

    2、逐步添加 barh() 参数,绘制条形图

    def title_table(ax):
        ax.set_title(label=f'No.{i+1}',
                    loc='center',
                    pad=None,
                    fontdict={'color': 'b'}
                     )
        ax.table(loc='upper right',    # 表格在图表区的位置
              
              colLabels=[f'{i+2} args'],    # 表格每列的列名称
              colColours=['g'],    # 表格每列列名称所在单元格的填充颜色
              colLoc='left',    # 表格中每列列名称的对齐位置
              colWidths=[0.15],    # 表格每列的宽度         
              cellText=args,    # 表格中的数值, 每行数据的列表的列表
              cellColours=[['cornsilk']]*len(args),    # 表格中数据所在单元格的填充颜色
              cellLoc='left',    # 表格中数据的对齐位置
              fontsize=8)
    
    # 定义数据
    x  = [1, 2, 3, 4, 5]
    y = [6, 10, 4, 5, 1]
    labels = list('abcde'.upper())
    
    # 配置字体,显示中文
    mpl.rcParams['font.sans-serif'] = ['SimHei']  
    # 配置坐标轴刻度值模式,显示负号
    mpl.rcParams['axes.unicode_minus'] = True
    
    # 设置子区布局和图表区属性
    fig, axes = plt.subplots(nrows=3,    # 子区行数
                             ncols=3,    # 子区列数
                             figsize=(18, 14),    # 图表区的大小
                             facecolor='cornsilk',    # 图表区的背景色
                            )
    # 将二维子区数组扁平化
    axes = axes.ravel()    # 返回子区坐标系的一维视图
    
    
    # 选择子区 1
    i = 0
    ax = axes[i]
    
    ## 设置子区背景色
    ax.set_facecolor('oldlace')    # 浅米色,老白色
    
    ## 在第 1 子区中绘制条形图
    ax.barh(y=x,    # 条形对应的 y 轴坐标
              width=y,    # 条形的长度
             )
    
    args = [[e] for e in ['y', 'width']]
    ## 向图表子区添加标题和数据表
    title_table(ax)
    
    # 选择子区 2
    i = 1
    ax = axes[i]
    
    ## 设置子区背景色
    ax.set_facecolor('lemonchiffon')    # 柠檬绸色
    
    ## 在第 2 子区中绘制条形图
    ax.barh(y=x,    # 条形对应的 y 轴坐标
              width=y,    # 条形的长度
              height=0.4,    # 条形的宽度
              )
    
    args = [[e] for e in ['y', 'width', 'height']]
    ## 向图表子区添加标题和数据表
    title_table(ax)
    
    # 选择子区 3
    i = 2
    ax = axes[i]
    
    ## 设置子区背景色
    ax.set_facecolor('moccasin')    # 鹿皮色
    
    ## 在第 3 子区中绘制条形图
    ax.barh(y=x,    # 条形对应的 y 轴坐标
              width=y,    # 条形的长度
              height=0.7,    # 条形的宽度
              align='edge',    # 条形与 y 轴刻度线对齐的位置
             )
    
    args = [[e] for e in ['y', 'width', 'heigth', 'align']]
    ## 向图表子区添加标题和数据表
    title_table(ax)
    
    # 选择子区 4
    i = 3
    ax = axes[i]
    
    ## 设置子区背景色
    ax.set_facecolor('palegoldenrod')    # 淡菊黄色
    
    ## 在第 4 子区中绘制条形图
    ax.barh(y=x,    # 条形对应的 y 轴坐标
              width=y,    # 条形的长度
              height=0.7,    # 条形的宽度
              align='edge',    # 条形与 y 轴刻度线对齐的位置
              color='darkgrey'    # 条形的填充颜色
             )
    
    args = [[e] for e in ['y', 'width', 'heigth', 'align', 'color']]
    ## 向图表子区添加标题和数据表
    title_table(ax)
    
    
    # 选择子区 5
    i = 4
    ax = axes[i]
    
    ## 设置子区背景色
    ax.set_facecolor('orange')    # 橘黄色
    
    ## 设置子区背景色
    ax.set_facecolor('palegoldenrod')    # 淡菊黄色
    
    ## 在第 5 子区中绘制条形图
    ax.barh(y=x,    # 条形对应的 y 轴坐标
              width=y,    # 条形的长度
              height=0.7,    # 条形的宽度
              align='edge',    # 条形与 y 轴刻度线对齐的位置
              color='darkgrey',    # 条形的填充颜色
              alpha=0.4,    # 条形填充颜色的透明度
             )
    
    args = [[e] for e in ['y', 'width', 'heigth', 'align', 'color', 'alpha']]
    ## 向图表子区添加标题和数据表
    title_table(ax)
    
    
    # 选择子区 6
    i = 5
    ax = axes[i]
    
    ## 设置子区背景色
    ax.set_facecolor('gold')    # 金黄色
    
    ## 在第 6 子区中绘制条形图
    ax.barh(y=x,    # 条形对应的 y 轴坐标
              width=y,    # 条形的长度
              height=0.7,    # 条形的宽度
              align='edge',    # 条形与 y 轴刻度线对齐的位置
              color='khaki',    # 条形的填充颜色
              alpha=1,    # 条形填充颜色的透明度
              left=0.7,    # 条形左侧边线对应的 x 轴坐标
             )
    
    args = [[e] for e in ['y', 'width', 'heigth', 'align', 'color', 'alpha', 'left']]
    ## 向图表子区添加标题和数据表
    title_table(ax)
    ## 设置刻度范围
    ax.set_xlim(0, 11)
    
    
    # 选择子区 7
    i = 6
    ax = axes[i]
    
    ## 设置子区背景色
    ax.set_facecolor('darkgoldenrod')    # 暗金黄色,深菊黄
    
    ## 在第 7 子区中绘制条形图
    ax.barh(y=x,    # 条形对应的 y 轴坐标
              width=y,    # 条形的长度
              height=0.7,    # 条形的宽度
              align='edge',    # 条形与 y 轴刻度线对齐的位置
              color='khaki',    # 条形的填充颜色
              alpha=1,    # 条形填充颜色的透明度
              left=0.2,    # 条形左侧边线对应的 x 轴坐标
              edgecolor='g'    # 条形的边框颜色
             )
    
    args = [[e] for e in ['y', 'width', 'heigth', 'align', 'color', 'alpha', 'left', 'edgecolor']]
    ## 向图表子区添加标题和数据表
    title_table(ax)
    ## 设置刻度范围
    ax.set_xlim(0, 11)
    
    
    # 选择子区 8
    i = 7
    ax = axes[i]
    
    ## 设置子区背景色
    ax.set_facecolor('goldenrod')    # 菊花黄,金麒麟色
    
    ## 在第 8 子区中绘制条形图
    ax.barh(y=x,    # 条形对应的 y 轴坐标
              width=y,    # 条形的长度
              height=0.7,    # 条形的宽度
              align='edge',    # 条形与 y 轴刻度线对齐的位置
              color='khaki',    # 条形的填充颜色
              alpha=1,    # 条形填充颜色的透明度
              left=0.2,    # 条形左侧边线对应的 x 轴坐标
              edgecolor='g',    # 条形的边框颜色
              linewidth=2,    # 条形边框线的宽度
             )
    
    args = [[e] for e in ['y', 'width', 'heigth', 'align', 'color', 'alpha', 'left', 'edgecolor',
                          'linewidht']]
    ## 向图表子区添加标题和数据表
    title_table(ax)
    ## 设置刻度范围
    ax.set_xlim(0, 11)
    
    
    # 选择子区 9
    i = 8
    ax = axes[i]
    
    ## 设置子区背景色
    ax.set_facecolor('lightgoldenrodyellow')    # 浅金黄色
    
    
    ## 在第 9 子区中绘制条形图
    ax.barh(y=x,    # 条形对应的 y 轴坐标
              width=y,    # 条形的长度
              height=0.7,    # 条形的宽度
              align='edge',    # 条形与 y 轴刻度线对齐的位置
              color='khaki',    # 条形的填充颜色
              alpha=1,    # 条形填充颜色的透明度
              left=0.2,    # 条形左侧边线对应的 x 轴坐标
              edgecolor='g',    # 条形的边框颜色
              linewidth=2,    # 条形边框线的宽度
              tick_label=labels    # 条形的标签名称
             )
    
    args = [[e] for e in ['y', 'width', 'heigth', 'align', 'color', 'alpha', 'left', 'edgecolor',
                          'linewidht', 'tick_label']]
    ## 向图表子区添加标题和数据表
    title_table(ax)
    ## 设置刻度范围
    ax.set_xlim(0, 11);

    图表

     

  • 相关阅读:
    random模块的讲解
    函数的商城代码练习
    python文件作业
    函数的学习
    三元表达式和列表生成式
    jQuery 遍历方法
    CSS font属性综合写法
    JQuery 添加节点
    Bootstrap 响应式中的兼容
    jQuery 中的attr和prop的区别
  • 原文地址:https://www.cnblogs.com/shanger/p/13054285.html
Copyright © 2011-2022 走看看