Matplotlib会自动得出沿x、y(和z轴,如果是3D图)轴显示的变量的最小值和最大值。然而,可以通过使用set_xlim()和set_ylim()函数明确地设置限制。实例如下:
下面代码是自动设置轴变量的:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
a1 = fig.add_axes([0.3,0.3,0.5,0.5])
x = np.arange(1,10)
a1.plot(x, np.exp(x))
a1.set_title('exp')
plt.show()
显示结果如下:
给x轴设置在0到10,给y轴设置0到10000,代码如下:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
a1 = fig.add_axes([0,0,1,1])
x = np.arange(1,10)
# 在axes区域画图并设置颜色为红色
a1.plot(x, np.exp(x),'r')
a1.set_title('exp')
# 给y轴设置变量范围
a1.set_ylim(0,10000)
# 给x轴设置变量范围
a1.set_xlim(0,10)
plt.show()
ticks是表示轴上数据点的标记。xticks()和yticks()函数使用一个列表对象作为参数。列表中的元素表示相应动作上显示ticks的位置。简单来说,ticks就是轴刻度对应的数。这里我们需要学习两个函数:
第一个:xticks() and yticks()
xticks()和yticks()函数使用一个列表对象作为参数。列表中的元素表示相应动作上显示ticks的位置。
ax.set_xticks([2,4,6,8,10])
第二个:set_xlabels() 和 set_ylabels()
ax.set_xlabels([‘two’, ‘four’,’six’, ‘eight’, ‘ten’])
实例如下:
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # main axes
y = np.sin(x)
ax.plot(x, y)
ax.set_xlabel(‘angle’)
ax.set_title('sine')
ax.set_xticks([0,2,4,6])
#ax.set_xticklabels(['zero','two','four','six'])
ax.set_yticks([-1,0,1])
plt.show()
显示结果如下:ax.set_xticks([0,2,4,6])
在ax.set_xticks([0,2,4,6])添加一行ax.set_xticklabels([‘zero’,‘two’,‘four’,‘six’])后显示图像如下:
可以看出,利用set_xticks([0,2,4,6])可以将我们的x轴显示4个刻度值并显示每个刻度上的值,用set_xticklabels([‘zero’,‘two’,‘four’,‘six’])会在x轴下方显示,并会替换掉原来的数字
set_xticks()和set_xticklabels()缺一不可,否则刻度个显示个数不确定,会乱。
有时候我们需要用到双x轴和双y轴。在绘制不同单位的曲线时更是如此。Matplotlib通过twinx和twiny函数来支持这个功能。
在下面的例子中,该图有两个y轴,一个显示exp(x),另一个显示log(x)。
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
a1 = fig.add_axes([0.1,0.1,0.8,0.8])
x = np.arange(1,11)
# 先设置好a1区域
a1.plot(x,np.exp(x))
a1.set_ylabel('exp')
# 利用a1.twin(),则还是这个区域作图,却使用了不同的y轴
a2 = a1.twinx()
a2.plot(x, np.log(x),'ro-')
a2.set_ylabel('log')
fig.legend(labels = ('exp','log'),loc='upper left')
plt.show()