python绘图基础—快速绘图和面向对象绘图

pyplot模块虽然用法简单,但不适合在较大的应用程序中使用。  为了将面向对象的绘图库包装成只使用函数的调用接口,pyplot模块的内部保存了当前图表以及当前子图等信息。当前的图表和子图可以使用plt.gcf()和plt.gca()获得,分别表示"Get Current Figure"和"Get Current Axes"。在pyplot模块中,许多函数都是对当前的Figure或Axes对象进行处理,比如说:  plt.plot()实际上会通过plt.gca()获得当前的Axes对象ax,然后再调用ax.plot()方法实现真正的绘图。

快速绘图:

import kNN
import matplotlib.pyplot as plt


datingDataMat, datingLabels = kNN.file2matrix('datingTestSet2.txt')

plt.figure()      #只有一张图的情况下不写会自动生成
plt.subplot(121) 
plt.scatter(datingDataMat[:, 1],datingDataMat[:, 2],color='r')
plt.subplot(122)
plt.plot([1,2,3], [4,5,6])
plt.show()


面向对象方法画出相同的图:

import kNN
import matplotlib.pyplot as plt


datingDataMat, datingLabels = kNN.file2matrix('datingTestSet2.txt')

fig = plt.figure()      #创建一张图命名为fig
ax1 = fig.add_subplot(121)  #将fig分成1行2列,第一子图命名为ax1
ax1.scatter(datingDataMat[:, 1],datingDataMat[:, 2],color='r')   #对第一子图ax1画散点图
ax2 = fig.add_subplot(122)  #第二子图命名为ax2
ax2.plot([1,2,3], [4,5,6])  #对第二子图画直线图
plt.show()      #这种写法中每一步操作都有一个对象
同时画两张图:

import kNN
import matplotlib.pyplot as plt


datingDataMat, datingLabels = kNN.file2matrix('datingTestSet2.txt')

fig1 = plt.figure(1)   #建立fig1并选定fig1,下面如果不换对象,操作都是对fig1,在面向对象的写法中,因为每一部都写入了对象,所以不需要考虑写法混乱的情况

ax1 = fig1.add_subplot(121)
ax1.scatter(datingDataMat[:, 1],datingDataMat[:, 2],color='r')
ax2 = fig1.add_subplot(122)
ax2.plot([1,2,3], [4,5,6])

fig2 = plt.figure(2)
ax3 = fig2.add_subplot(111)
ax3.plot([1,2,3], [4,5,6])
plt.show()
快速绘图写法:

import matplotlib.pyplot as plt
plt.figure(1)                # 选定第一张图
plt.subplot(211)             # 选定第一张图中的第一张子图
plt.plot([1,2,3])            # 在第一张图的第一张子图中画
plt.subplot(212)             # 选定第一张图中的第二张子图
plt.plot([4,5,6])            # 在第一张图的第二张子图中画


plt.figure(2)                # 选定第二张图
plt.plot([4,5,6])            # 不写plt.subplot(111)(括号中的111不可省略)默认创建子图subplot(111)

plt.figure(1)                # 切换到figure 1 ; 子图subplot(212)仍旧是当前图
plt.subplot(211)             # 令子图subplot(211)成为figure1的当前图
plt.title('Easy as 1,2,3')   # 添加subplot 211 的标题
在快速绘图中必须要考虑操作对象,不能能混

另外面向对象绘图中加坐标名字和标题要加set_:

import matplotlib.pyplot as plt  

x = [5, 6, 7, 8]
y = [7, 8, 5, 6]
fig = plt.figure(1)
ax1 = fig.add_subplot(111)
ax1.plot(x,y)

ax1.set_title('First Chart')
ax1.set_xlabel('x axis')
ax1.set_ylabel('y axis')








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值