python plot设置坐标轴_Matplotlib入门-2-坐标轴axis/axes设置

这里并没有涵盖所有的的关于axis的设置方法,将一些常用的操作写出来,供大家学习使用。其余的一些高级操作,作为前期学习而言也没必要展示,用到的话,后续再补充。

学习前欢乐一下:这里有个Python界未有定论的问题(滑稽=,=),请问我们之前安装的科学计算模块numpy怎么发音呢?有知道的小伙伴,把答案写在评论区。

我今天看了篇帖子,把我搞懵= =|||......我自己都不会读了,哈哈

(1)坐标轴刻度范围及标度间隔调整

在对数据进行可视化展示时,默认提供的刻度范围和标度间隔并不是我们想要的,例如下图

先简单解释一下这个图像的生成过程,主要用到了numpy中的linspace( )函数,该函数的作用是在指定的间隔内返回均匀间隔的数字,代码如下,print一下,截图直观感受

import numpy as np

n = np.linspace(5, 11, 4)

print(n)

通过np.linspace(5, 11, 4)产生了区间在(5, 11)之间的均匀分布的数据样本

这样做得好处就是不用“笨笨的”自己在数组中编数据(自己慢慢理解)

那么上图代码就非常好写了(有一点点简单函数知识)

import matplotlib.pyplot as plt

import numpy as np

# 产生区间在-5至4间的30个均匀数值(当做x坐标值,并当做下面两个方程共同的输入)

n = np.linspace(-5, 4, 30)

m1 = 3 * n + 2 # 二元一次方程,即直线

m2 = n ** 2 # 二元二次方程,即抛物线

plt.plot(n, m1, 'r-.', n, m2, 'b')

plt.show()

假定,默认成图后,需要观察的区域只限于直线与抛物线相交部分,那么如何操作呢?

利用xlim( )和ylim( )函数进行优化,可以分别设定X轴和Y轴的取值范围

观察上图,直线与抛物线相交部分大致为:X轴区间是(-2,4),Y轴区间是(-5,15)

直接上代码上图

import matplotlib.pyplot as plt

import numpy as np

n = np.linspace(-5, 4, 30)

m1 = 3 * n + 2

m2 = n ** 2

plt.plot(n, m1, 'r-.', n, m2, 'b')

plt.xlim((-2, 4)) #将X轴范围设定在(-2, 4)

plt.ylim((-5, 15)) #将Y轴范围设定在(-5, 15)

plt.show()

坐标轴范围调整搞定!但是横纵坐标轴刻度感觉稀疏不一,继续优化!

通过xticks( )函数可以给X轴的刻度重新赋值,同理也可以用yticks( )函数给Y轴的刻度重新赋值。这里仍然用到linspace( )

import matplotlib.pyplot as plt

import numpy as np

n = np.linspace(-5, 4, 30)

m1 = 3 * n + 2

m2 = n ** 2

plt.plot(n, m1, 'r-.', n, m2, 'b')

plt.xlim((-2, 4))

plt.ylim((-5, 15))

x_ticks = np.linspace(-5, 4, 10) # 产生区间在-5至4间的10个均匀数值

plt.xticks(x_ticks) # 将linspace产生的新的十个值传给xticks( )函数,用以改变坐标刻度

plt.show()

和原图对比,刻度紧密了,图形也好看了

思想缜密点的同学又要问了,怎么感觉这图不全?x = -5,它的的平方后的y值应该是25,这图怎么Y轴到15就结束了?

其实是在的,只是显示不全(画布总共就这么大),你可以通过画布上的“十字标记”按钮进行拖拽,按钮如下图所示

注意!!!

上述代码中,plt.xlim( )必须在plt.xticks( )之前,否则会失效!大家可以尝试

这也符合我们的思维逻辑

(2)坐标轴标注

为了能够清晰地展示横纵坐标轴所代表的意义,必要时要进行打标签操作

这里要用到xlable( )和ylable( )函数

上代码上图直观感受

import matplotlib.pyplot as plt

import numpy as np

n = np.linspace(-5, 4, 30)

m1 = 3 * n + 2

m2 = n ** 2

plt.plot(n, m1, 'r-.', n, m2, 'b')

plt.xlim((-2, 4))

plt.ylim((-5, 15))

x_ticks = np.linspace(-5, 4, 10)

plt.xticks(x_ticks)

plt.xlabel('XXX')

plt.ylabel('YYY')

plt.show()

(3)坐标轴标注替换

有时候我们不需要这种数值型的坐标轴标注,比方说在上图中是我对某人爱恨情仇的曲线图(= =|||请勿对号入座,都说了是比如说......)

低于Y轴-2.5处我认为是恨,高于Y轴7.5处我认为是爱,怎么做?

可以利用yticks( )进行标度值的替换

直接上代码上图

import matplotlib.pyplot as plt

import numpy as np

n = np.linspace(-5, 4, 30)

m1 = 3 * n + 2

m2 = n ** 2

plt.plot(n, m1, 'r-.', n, m2, 'b')

plt.xlim((-2, 4))

plt.ylim((-5, 15))

x_ticks = np.linspace(-5, 4, 10)

plt.xticks(x_ticks)

# 将对应标度位置的数字替换为想要替换的字符串,其余为替换的不再显示

plt.yticks([-2.5, 7.5], ['hate','love'])

plt.xlabel('XXX')

plt.ylabel('YYY')

plt.show()

补充一句,好多人习惯于显示汉语,那么在模块导入之后,请加入下面的两行语句

plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签

plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号

好了,今天的到此为止,记得回答我文章开头的问题哦~看完拿走不谢,请点赞关注,谢谢~