Matplotlib(1)

MyTear

matplotlib是一个用来画图的python的包,他是由John D. Hunter发起的。mtplotlib使用numpy进行数组运算,并调用一系列其他的Python库来实现硬件交互,其核心是一套由对象构成的绘图API。

最近被人问到一些matplotlib的问题,但对答案又一知半解,所以在这里希望加深一下对matplotlib的理解以及使用


简单的示例

这里我们使用一个简单的示例来了解matplotlib的使用

import numpy as np
import matplotlib as mpl    
mpl.use('Agg')              
import matplotlib.pyplot as plt

X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)

plt.plot(X,C)
plt.plot(X,S)

plt.show()
示例

代码没问题,结果没问题,但是对于我这个一直习惯于python的面向对象写法的菜鸟,这个代码有些理解不能了!!!将pyplot导入为plt之后,这个代码一直是在进行函数式操作,又或者是plt是一个类???

关于没有图形终端的解决方案
当你碰到QT之类的问题时,请尝试下面的方案:

Generate images without having a window appear

The easiest way to do this is use a non-interactive backend (see What is a backend?) such as Agg (for PNGs), PDF, SVG or PS. In your figure-generating script, just call the matplotlib.use() directive before importing pylab or pyplot:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.plot([1,2,3])
plt.savefig('myfig')

一个面向对象的例子

对于用惯了Python的同学,上面的看似面向过程的例子总归很别扭,下面是一个面向对象的例子:

import numpy as np
import matplotlib as mpl    
mpl.use('Agg')              
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot()

X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)

ax.plot(X,C)
ax.plot(X,S)

plt.show()

暂时所看到的就这么多了,这里的axmatplotlib.axes._subplots.AxesSubplot类型的对象。虽然最后还是显式的调用plt.show()或者plt.savefig()这两个函数来保存对象(对于matplotlib这样的用法实在有点接受不能)。

你可能感兴趣的:(Matplotlib(1))