zoukankan      html  css  js  c++  java
  • 4.13Python数据处理篇之Matplotlib系列(十三)---轴的设置

    目录

    前言

    本章节讲的是关于轴的设置,尽可能举例多种情况。

    (一)设置轴的范围

    1.同时对于x,y轴设置

    (1)语法说明

    plt.axis([xmin, xmax, ymin, ymax])

    (2)源代码

    # 导入模块
    import matplotlib.pyplot as plt
    import numpy as np
    
    # 数据
    x = np.linspace(-10, 10, 100)
    y = x**2
    
    # 绘图
    plt.plot(x, y)
    
    # 设置轴的范围
    plt.axis([-6, 7, -1, 30])
    
    # 展示
    plt.show()
    

    (3)输出效果

    01.png

    2.分别对与x,y轴的设置

    (1)语法说明

    1. 对于x轴:plt.xlim(start, end)
    2. 对于y轴:plt.ylim(start, end)

    如果是使用ax对象设置范围的话,则可在前加set_命令

    ax.set_xlim(start, end), ax.set_ylim(start, end), 其他的命令类似如此。

    (2)源代码

    # 导入模块
    import matplotlib.pyplot as plt
    import numpy as np
    
    # 数据
    x = np.linspace(-10, 10, 100)
    y = x**2
    
    # 绘图
    plt.plot(x, y)
    
    # 设置轴的范围
    plt.xlim(-3, 8)
    plt.ylim(-2, 50)
    
    # 展示
    plt.show()
    

    (3)输出效果

    02.png

    (二)设置刻度的大小

    1.普通的刻度设置

    (1)说明

    x轴的刻度:plt.xticks(item)
    y轴的刻度:plt.yticks(item)

    (2)源代码

    # 导入模块
    import matplotlib.pyplot as plt
    import numpy as np
    
    # 数据
    x = np.linspace(-10, 10, 100)
    y = x**2
    
    # 绘图
    plt.plot(x, y)
    
    # 设置轴的刻度
    plt.xticks(range(-8, 8, 2))
    plt.yticks([0, -3, -6, 7, 15, 20, 37, 48, 72])
    
    # 展示
    plt.show()
    

    (3)输出效果

    03.png

    2.添加文本的刻度设置

    (1)说明

    其实就是在设置刻度的基础上,在添加一个列表,来显示刻度。

    如:plt.xticks(['数据'], ["标签"])

    (2)源代码

    # 导入模块
    import matplotlib.pyplot as plt
    import numpy as np
    
    # 数据
    x = np.linspace(-10, 10, 100)
    y = x**2
    
    # 绘图
    plt.plot(x, y)
    
    # 设置轴的刻度
    plt.xticks(range(-8, 8, 2))
    plt.yticks([0, 40, 60], ["bad", 'good', "best"])
    
    # 展示
    plt.show()
    

    (3)输出效果

    04.png

    3.主副刻度的设置

    (1)说明

    1. 需要导入:from matplotlib.ticker import MultipleLocator, FormatStrFormatter 模块
    2. 主刻度:(y轴同理)
      1. 倍数:ax.xaxis.set_major_locator(MultipleLocator(倍数))
      2. 文本格式:ax.xaxis.set_major_formatter(FormatStrFormatter('%占位数.小数点数f'))
    3. 副刻度:(将"major"改为"minor"即可)
      1. 倍数:ax.xaxis.set_minor_locator(MultipleLocator(倍数))
      2. 文本格式:ax.xaxis.set_minor_formatter(FormatStrFormatter('%占位数.小数点数f'))

    (2)源代码

    # 导入模块
    import matplotlib.pyplot as plt
    from matplotlib.ticker import MultipleLocator, FormatStrFormatter
    import numpy as np
    
    # 数据
    x = np.linspace(-30, 30, 100)
    y = x**2
    
    # 绘图
    plt.plot(x, y)
    
    ax = plt.gca()
    # 设置轴的主刻度
    # x轴
    ax.xaxis.set_major_locator(MultipleLocator(20))  # 设置20倍数
    ax.xaxis.set_major_formatter(FormatStrFormatter('%5.1f'))  # 设置文本格式
    
    # y轴
    ax.yaxis.set_major_locator(MultipleLocator(100))  # 设置100倍数
    ax.yaxis.set_major_formatter(FormatStrFormatter('%1.2f'))  # 设置文本格式
    
    # 设置轴的副刻度
    # x轴
    ax.xaxis.set_minor_locator(MultipleLocator(5))  # 设置10倍数
    # ax.xaxis.set_minor_formatter(FormatStrFormatter('%2.1f'))  # 设置文本格式
    
    # y轴
    ax.yaxis.set_minor_locator(MultipleLocator(50))  # 设置50倍数
    # ax.yaxis.set_minor_formatter(FormatStrFormatter('%1.0f'))  # 设置文本格式
    
    # 设置网格
    ax.xaxis.grid(True, which='major')  # x坐标轴的网格使用主刻度
    ax.yaxis.grid(True, which='minor')  # y坐标轴的网格使用次刻度
    
    # 展示
    plt.show()
    

    (3)输出效果

    05.png

    (三)设置轴的数据

    1.说明:

    以x轴的数为日期,再以plt.gcf().autofmt_xdate()来旋转显示日期数据。

    2.源代码

    # 导入模块
    import matplotlib.pyplot as plt
    import numpy as np
    
    
    # 数据
    N = 4
    y = np.random.randint(-20, 20, (1, N)).flatten()
    
    x = ["2019-3-13", "2019-3-14", "2019-3-15", "2019-3-16"]
    
    # 绘图
    plt.plot(x, y)
    
    # 旋转日期显示
    plt.gcf().autofmt_xdate()
    
    
    # 展示
    plt.show()
    

    3.输出效果:

    06.png

    (四)设置axes脊柱

    1.属性列表

    ax.spines[' '].xxx 说明 默认值
    set_visible(bool) 边框的可见性 True
    ax.xaxis.set_ticks_position({"top","left"……}) 刻度的显示位置 外面(不是ax.spines[' '].)
    set_position({"top","left"……}) 边框的位置 左下角为交点
    set_color(string) 边框的颜色 “black"(当值为None也是隐藏)
    set_linewidth(int) 边框的宽度 1
    set_linestyle(string) 边框的线性 ”-“

    2.实例1-修改默认的坐标样式

    (1).说明:

    设置反方向(y轴同理):
    x轴反向:ax.invert_xaxis()

    (2).源代码:

    # 导入模块
    import matplotlib.pyplot as plt
    import numpy as np
    
    # 数据
    x = np.linspace(-10, 10, 100)
    y = x**2
    
    # 绘图
    plt.plot(x, y)
    
    ax = plt.gca()
    # ===设置脊(边框)===
    # 1.隐藏上与右的边框
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_color(None)
    
    # 2.设置颜色
    ax.spines['left'].set_color('b')
    ax.spines['bottom'].set_color('r')
    
    # 3.设置线宽
    ax.spines['left'].set_linewidth(5)
    ax.spines['bottom'].set_linewidth(3)
    
    # 4.设置线形
    ax.spines['left'].set_linestyle('--')
    ax.spines['left'].set_linestyle('-.')
    
    # 5.设置交点位置(0, 35)
    ax.spines['left'].set_position(('data', 0))
    ax.spines['bottom'].set_position(('data', 35))
    
    # 6.设置数据显示的位置
    ax.xaxis.set_ticks_position('bottom')
    ax.yaxis.set_ticks_position('right')
    
    
    # 7.设置反方向(y轴同理)
    ax.invert_xaxis()  # x轴反向
    
    # 展示
    plt.show()
    

    (3).输出效果:

    07.png

    3.实例2-带箭头的坐标系

    (1)说明:

    需要导入:import mpl_toolkits.axisartist as axisartist

    大致步骤如下:

    1. 隐藏原有的边框坐标系
    2. 创建新的坐标系
    3. 添加箭头

    注意:再创建新的坐标系时ax.new_floating_axis(0, 0)

    1. 第一个参数:0表示横线,1表示竖线
    2. 第二格参数:表示经过那个坐标点。

    (2)源代码:

    # 导入模块
    import matplotlib.pyplot as plt
    import mpl_toolkits.axisartist as axisartist
    
    import numpy as np
    
    # 数据
    x = np.linspace(-10, 10, 100)
    y = x**2
    
    # 创建画布
    fig = plt.figure(figsize=(4, 6))
    ax = axisartist.Subplot(fig, 111)
    # 将绘图区对象添加到画布中
    fig.add_axes(ax)
    
    # ===带箭头坐标系的设置===
    # 1.隐藏原有的边框坐标系
    ax.axis[:].set_visible(False)
    
    # 2.创建新的坐标系
    ax.axis["x"] = ax.new_floating_axis(0, 0)
    ax.axis["y"] = ax.new_floating_axis(1, 0)
    
    # 3.添加箭头
    ax.axis["x"].set_axisline_style("->", size=2.0)
    ax.axis["y"].set_axisline_style("->", size=1.0)
    
    # 绘图
    ax.plot(x, y)
    
    # 展示
    plt.show()
    

    (3)输出效果:

    08.png

    作者:Mark

    日期:2019/03/13 周三

  • 相关阅读:
    oracle按用户导出导入表
    一次简单的springboot+dubbo+flume+kafka+storm+redis系统
    数据库索引学习
    springboot-quartz 实现动态添加,修改,删除,暂停,恢复等功能
    springboot + rabbitmq 整合示例
    springboot-quartz普通任务与可传参任务
    eclipse里maven项目An error occurred while filtering resources解决办法
    job调度时间格式
    多线程发送短信和微信公众号推送消息
    SerializeUtil 序列化,反序列化工具类
  • 原文地址:https://www.cnblogs.com/zyg123/p/10522102.html
Copyright © 2011-2022 走看看