这里并没有涵盖所有的的关于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 # 用来正常显示负号
好了,今天的到此为止,记得回答我文章开头的问题哦~看完拿走不谢,请点赞关注,谢谢~