我们先来看什么是Figure和Axes对象。在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个,或者多个Axes对象。每个Axes对象都是一个拥有自己坐标系统的绘图区域。其逻辑关系如下:
以下整个图像是fig对象。我们的绘图中只有一个坐标系区域,也就是ax。此外还有以下对象。(括号中表示对象的基本类型)
Title为标题;
Axis为坐标轴;
Label为坐标轴标注;
Tick为刻度线;
Tick Label为刻度注释。
各个对象之间有下面的对象隶属关系:
(yaxis同样有tick, label和tick label,没有画出)
尽管data是数据绘图的关键部分,也就是数据本身的图形化显示,但是必须和xaxis, yaxis, title一起,才能真正构成一个绘图区域axes。一个单纯的,无法读出刻度的
坐标
坐标是计算机绘图的基础。计算机屏幕是由一个个像素点构成的。想要在屏幕上显示图像,计算机必须告诉屏幕每个像素点上显示什么。所以,最贴近硬件的坐标体系是以像素为单位的坐标体系。我们可以通过具体说明像素位置来标明显示器上的某一点。这叫做显示坐标(display coordinate),以像素为单位。
然而,像素坐标不容易被纳入绘图逻辑。相同的程序,在不同的显示器上就要调整像素值,以保证图像不变形。所以一般情况下,还会有图像坐标和数据坐标。
图像坐标将一张图的左下角视为原点,将图像的x方向和y方向总长度都看做1。x方向的0.2就是指20%的图像在x方向的总长,y方向0.8的长度指80%的y方向总长。(0.5, 0.5)是图像的中点,(1, 1)指图像的右上角。比如下面的程序,我们在使用add_axes时,传递的参数中,前两个元素为axes的左下角在fig的图像坐标上的位置,后两个元素指axes在fig的图像坐标上x方向和y方向的长度。fig的图像坐标称为Figure坐标,储存在为fig.transFigure
线是没有意义的。xaxis, yaxis, title合起来构成了数据的辅助部分(data guide)。
例程1:
#!/usr/bin/env python
import matplotlib.pyplot as plt
plt.plot([10, 20, 30])
plt.xlabel('tiems')
plt.ylabel('numbers')
plt.show()
例程二:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0.0, 1.01, 0.01)
s = np.sin(2*2*np.pi*t)
plt.fill(t, s*np.exp(-5*t), 'r')
plt.grid(True)
#保存为PDF格式,也可保存为PNG等图形格式
plt.savefig('D:\\test.pdf')
plt.show()
例程三:
import numpy as np
import matplotlib.pyplot as plt
x = [4,5,5,7,8]
t1 = [1,2,4,4,6]
t2 = [1,2,3,4,5]
plt.figure(1)
plt.plot(t1,'k')
plt.scatter(x,t2,s=2,alpha=1)
plt.show()
例程四:
import numpy as np
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
t1 = [1,2,3,4,5]
t2 = [1,4,6,8,10]
t3 = [1,8,9,10,20]
plt.figure(1)
#add line
plt.plot(t1,'r')
#add circle
plt.plot(t2,'o')
#add dian
plt.scatter(x,t2,s=2,alpha=1)
plt.xlabel('date(2000+)')
plt.ylabel('house prices')
plt.title('just testing for line and pot')
- title : 设置图表的标题
- ylim : 设置Y轴的范围
- legend : 显示图示最后调用plt.show()显示出我们创建的所有绘图对象。
2 两种常用图类型:Line and scatter plots(使用plot()命令), histogram(使用hist()命令)
2.1 折线图&散点图 Line and scatter plots
2.1.1 折线图 Line plots(关联一组x和y值的直线)
import numpy as np
import pylab as pl
x = [1,2, 3,4, 5]# Make an array of x values
y = [1,4, 9,16, 25]# Make an array of y valuesfor each x value
pl.plot(x, y)# use pylab to plot x and y
pl.show()# show the plot on the screen
把pl.plot(x, y)改成pl.plot(x, y, 'o')即可,下图的蓝色版本
2.2 美化 Making things look pretty
2.2.1 线条颜色 Changing the line color
红色:把pl.plot(x, y, 'o')改成pl.plot(x, y, ’or’)
参考文献:
http://www.cnblogs.com/vamei/archive/2013/01/30/2879700.html
http://blog.csdn.net/dyx1024/article/details/7296748
http://www.2cto.com/kf/201407/317115.html
http://www.tuicool.com/articles/7zYNZfI
http://www.it165.net/pro/html/201406/15941.html