zoukankan      html  css  js  c++  java
  • Matplotlib 坐标轴

    一、坐标轴上下限

    使用plt.xlim()plt.ylim()来调整上下限的值:

    import numpy as np
    import matplotlib.pyplot as plt
    
    x = np.linspace(0,10,100)
    plt.plot(x,np.sin(x))
    plt.xlim(-1,11)
    plt.ylim(-1.5,1.5)
    plt.show()

    也可以让坐标轴逆序显示,只需要逆序提供坐标轴的限值:

    plt.plot(x,np.sin(x))
    plt.xlim(11,-1)
    plt.ylim(1.5,-1.5)

    或者使用plt.axis()方法设置坐标轴的上下限(注意区别axes和axis),参数方式是[xmin, xmax, ymin, ymax]

    plt.plot(x,np.sin(x))
    plt.axis([-1,11,-1.5,1.5])

    axis的作用不仅于此,还可以按照图形的内容自动收缩坐标轴,不留空白。此种情况下,x和y轴的限值会自动计算,不用提供:

    plt.plot(x,np.cos(x))
    plt.axis('tight')
    # -0.5, 10.5, -1.0993384025373631, 1.0996461858110391)

    更多类似的常用设置值有:

    • off:隐藏轴线和标签
    • tight:紧缩模式
    • equal:以1:1的格式显示,x轴和y轴的单位长度相等
    • scaled: 通过更改绘图框的尺寸来获得相同的结果
    • square: x轴和y轴的限制值一样

    二、坐标轴刻度

    通常情况下,系统会自动根据提供的原始数据,生成x和y轴的刻度标签。但是很多时候,我们往往需要自定义刻度,让它符合我们的需要,比如下面的例子:

    plt.plot(np.random.randn(1000).cumsum())
    plt.show()

    我们可以手动提供刻度值,并调整刻度的角度和大小:

    plt.plot(np.random.randn(1000).cumsum())
    plt.xticks([0,250,500,750,1000],rotation=30, fontsize='large')
    plt.yticks([-45,-35,-25,-15,0],rotation=30, fontsize='small')
    plt.show()

    三、坐标轴刻度详解

    Matplotlib图形对象具有层级关系。Figure对象其实就是一个盛放图形元素的盒子box,每个figure都会包含一个或多个axes对象,而每个axes对象又会包含其它表示图形内容的对象,比如xais和yaxis,也就是x轴和y轴。

    • 主要刻度和次要刻度

    每个坐标轴都有主要刻度和次要刻度,主要刻度往往更大或者突出显示,而次要刻度往往更小,一般不直接显示。

    下面是一个对数坐标轴,可以看到次要刻度:

    ax = plt.axes(xscale='log', yscale='log')

    我们发现每个主要刻度都显示未一个较大的刻度线和标签,而次要刻度都显示为一个较小的刻度线,并且不现实标签。

    • 隐藏刻度与标签

    如果我们想隐藏刻度或标签,就要着落在locator和formatter这两大属性上了:

    ax = plt.axes()
    x = np.linspace(0,10,100)
    ax.plot(np.cos(x))
    
    ax.yaxis.set_major_locator(plt.NullLocator())
    ax.xaxis.set_major_formatter(plt.NullFormatter())
    plt.show()

    可以看出,没有locator,刻度和标签都会被隐藏起来;没有formatter,隐藏标签,但刻度还存在。

    • 设置刻度数量

    默认情况下,matplotlib会自动帮我们调节刻度的数量,但有时候也需要我们自定义刻度数量:

    fig, ax = plt.subplots(4, 4, sharex=True, sharey=True)
    for axi in ax.flat:
        axi.xaxis.set_major_locator(plt.MaxNLocator(4))
        axi.yaxis.set_major_locator(plt.MaxNLocator(4))
    plt.show()

  • 相关阅读:
    windows下使用vscode编写运行以及调试C/C++
    nginx基础模块
    Windows下配置nginx+php(wnmp)
    快速创建 Vue 项目
    你真的会玩SQL吗?冷落的Top和Apply
    你真的会玩SQL吗?透视转换的艺术
    你真的会玩SQL吗?你所不知道的 数据聚合
    你真的会玩SQL吗?简单的数据修改
    你真的会玩SQL吗?表表达式,排名函数
    你真的会玩SQL吗?Case也疯狂
  • 原文地址:https://www.cnblogs.com/lavender1221/p/12777444.html
Copyright © 2011-2022 走看看