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 周三

  • 相关阅读:
    Maven关于web.xml中Servlet和Servlet映射的问题
    intellij idea的Maven项目运行报程序包找不到的错误
    修改Maven项目默认JDK版本
    刷题15. 3Sum
    刷题11. Container With Most Water
    刷题10. Regular Expression Matching
    刷题5. Longest Palindromic Substring
    刷题4. Median of Two Sorted Arrays
    刷题3. Longest Substring Without Repeating Characters
    刷题2. Add Two Numbers
  • 原文地址:https://www.cnblogs.com/zyg123/p/10522102.html
Copyright © 2011-2022 走看看