• 第五章. 可视化数据分析分析图表—图表的常用设置2


    第五章. 可视化数据分析图

    5.2 图表的常用设置2

    本节主要介绍图表的常用设置,设置标题和图例,添加注释文本,调整图表与画布边缘间距以及其他设置。

    7.设置标题(title)

    1).语法:

    matplotlib.pyplot.title(label,fontdict=None,loc='center',pad=None,**kwargs)
    
    • 1

    参数说明:
    label:图表标题文本
    fontdict:字典,用于设置标题字体的样式,如’{‘fontsize’:10,‘fontweight’:10,‘va’:‘bottom’,‘ha’:‘center’}’
    loc:标题水平位置,参数:center,left,right
    pad:标题距离图表顶部的距离

    8.设置图例(legend)

    1).语法:

    matplotlib.pyplot.legend(*args, **kwargs)
    
    • 1

    参数说明:
    可设置很多参数,如图例名称,显示位置,轴与图例之间的距离

    2).图例显示方式:

    • 自动显示:
      matplotlib.pyplot.legend()
      
      • 1
    • 手动添加:
      matplotlib.pyplot.legend(('图书采购价目',), loc='upper right')
      
      • 1
      注:手动添加图例时,有时文本会显示不全,在文本后面加一个逗号(,)可解决,例如:(‘图书采购价目’,)

    3).图例显示位置:(loc)

    位置(字符串)位置索引描述位置(字符串)位置索引描述
    best0自适应center left6左侧中间位置
    upper right1右上方center right7右侧中间位置
    upper left2左上方lower center8下方中间位置
    lower left3左下方upper center9上方中心位置
    lower right4右下方center10中心
    right5右侧

    注:

    • 参数bbox_to_anchor也可对图例的位置进行控制,元组类型 bbox_to_anchor =(num1,num2),num1:控制legend左右移动(值越大越向右移动),num2:控制legend上下移动(值越大越向上移动)
    • 参数borderaxespad,可控制轴和图例边框之间的间距,字体大小为单位度量

    9.添加注释(annotate)

    在图表上给数据添加文本注释,描述信息

    1).语法:

    matplotlib.pyplot.annotate(s, xy, *args, **kwargs)
    
    • 1

    参数说明:
    s:标注文本
    xy:要标注的点,二维元组(x,y)。
    xytext:可选的,文本的位置,二维元组(x,y)。如果没有设置,默认为要标注的点的坐标。
    xycoords:可选的,点的坐标系。字符串、Artist、Transform、callable或元组。
    arrowprops:箭头的样式,dict型数据,如果属性为空,则会在注释文本和被注释点之间画箭头

    2).xycoords参数设置及说明

    设置值说明
    figure points以图的左下角为参考,单位点数
    figure pixels以图的左下角为参考,单位像素数
    figure fraction以图的左下角为参考,单位百分比
    axes points以子图的左下角为参考,单位点数(一个figure可以有多个axes )
    axes pixels以子图的左下角为参考,单位像素数
    axes fraction以子图的左下角为参考,单位百分比
    data以被注释的坐标点x,y为参考(默认值)
    polar不使用本地数据坐标系,使用极坐标系

    3).arrowprops参数设置及说明

    设置值说明
    width箭头的宽度,单位点
    headwidth箭头头部的宽度,单位点
    headlength箭头头部的长度,单位点
    shrink箭头两端收缩的百分比(占总比)
    任何matplotlib.patches.FancyArrowPatch中的关键字

    10.调整图表与画布边缘间距(subplots_adjust)

    绘制图表的时候,由于x,y轴标题与画布边缘距离太近,而显示不全,可通过subplots_adjust函数来调节图表和画布之间的距离

    1).语法:

    matplotlib.pyplot.subplots_adjust(left=None,bottom=None,right=None,top=None,wspace=None,hspace=None)
    
    • 1

    参数说明:
    left,bottom,right,top:调整上下左右的空白,left和bottom值越小,空白越小,right和top,值越大,空白越小(画布是从左下角开始,取值0~1)
    wspace,hspace:用于调节列间距和行间距

    11.是否显示坐标轴上的刻度线以及显示方向(tick_params)

    绘制图表的时候,left,bottom,right,top四个方向的刻度线是否显示,以及x,y轴刻度线的显示方向

    1).4个坐标轴上的刻度线是否显示语法:

    matplotlib.pyplot.tick_params(axis='both', **kwargs)
    
    • 1

    参数说明:
    axis:将参数应用于哪个轴,{‘ x ‘, ‘ y ‘, ‘ both ‘},可选,默认‘ both ‘

    2).x,y轴刻度线显示方向语法:

    matplotlib.pyplot.rcParams['xtick.direction'] = 'in'
    matplotlib.pyplot.rcParams['ytick.direction'] = 'in'
    
    • 1
    • 2

    参数说明:
    direction:将刻度置于坐标轴内、轴外,或同时置于两者 ‘,{‘in’, ‘out’, ‘inout’}可选,默认 ‘out’

    12.上述函数的应用

    1).结果展示:

    在这里插入图片描述

    2).代码:

    import pandas as pd
    import matplotlib.pyplot as plt
    
    pd.set_option('display.unicode.east_asian_width', True)
    df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet1', usecols=['原价', '书名'])
    print(df)
    
    # 设置画布
    fig = plt.figure(figsize=(6, 4), facecolor='y')
    
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
    plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题
    
    # X,Y轴刻度线的显示方向
    plt.rcParams['xtick.direction'] = 'in'
    plt.rcParams['ytick.direction'] = 'in'
    
    
    # 设置线
    plt.plot(df['书名'], df['原价'], color='c', linestyle='-', marker='o', mfc='w')
    
    # 设置网格线
    plt.grid(color='0.5', linestyle='--', linewidth=1)
    
    # 设置x,y轴坐标
    plt.xlabel('书名')
    plt.ylabel('原价')
    
    # 设置坐标轴刻度
    plt.xticks(df['书名'])
    
    # 设置文本标签
    for x, y in zip(df['书名'], df['原价']):
        plt.text(x, y, '%.2f' % y, ha='center', va='bottom', fontsize=9)
    
    # 设置标题和图例
    plt.title('图书采购价目表')
    
    # 设置图标图例
    plt.legend(('图书采购价目',), loc='upper right')  # 手动添加图例时,有时文本会显示不全,在文本后面加一个逗号(,)可解决,例如('图书采购价目',)
    
    # 添加注释
    plt.annotate('价目最低', xy=(df['书名'][2], df['原价'][2]), xytext=(df['书名'][2], df['原价'][2] + 2), xycoords='data',
                 arrowprops=dict(facecolor='r', shrink=0.05))
    
    # 调整图表与画布边缘间距
    plt.subplots_adjust(left=0.15, bottom=0.15, right=0.9, top=0.9)
    
    # 坐标轴的刻度线向内显示还是向外显示
    plt.tick_params(left=True, bottom=True, right=False, top=False)
    
    # 显示图像
    plt.show()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54

    注意:图表的常用设置:颜色设置,线条样式,标记样式,设置画布,坐标轴,添加文本标签,在图表的常用设置1 中介绍

  • 相关阅读:
    sql注入学习笔记
    MySQL复合查询
    在React中的函数组件和类组件——附带示例的对比
    hudi系列-changelog的读写
    Qt中正确的设置窗体的背景图片的几种方式
    十大排序算法C++实现
    如何使用websocket+node.js实现pc后台与小程序端实时通信
    你对Spring Security使用场景以及底层原理有了解吗?
    Codeforces Round #811 (Div. 3) ABC题解
    coalesce函数判断oracle、postgresql中为null或者‘‘ 赋值默认
  • 原文地址:https://blog.csdn.net/weixin_45116749/article/details/128117839