码迷,mamicode.com
首页 > 其他好文 > 详细

使用matplotlib绘制图表

时间:2015-04-09 19:54:14      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

我们先来看什么是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

   

                                                           技术分享

 

2.1.2 散点图 Scatter plots

把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  

使用matplotlib绘制图表

标签:

原文地址:http://blog.csdn.net/chun_1959/article/details/44961537

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!