Python制作统计图形

Python制作统计图形

作者: admin  分类: python数据分析  发布时间: 2014-07-19 17:37  ė  6没有评论

Python一般使用Matplotlib制作统计图形,用它自己的说法是‘让简单的事情简单,让复杂的事情变得可能’。(你说国外的“码农”咋这么会说,我就整不出来这工整的句子!)用它可以制作折线图,直方图,条形图,散点图,饼图,谱图等等你能想到的和想不到的统计图形,这些图形可以导出为多种具有出版质量的格式。此外,它和ipython结合使用,确实方便,谁用谁知道!

在Matplotlib里面经常使用到的是pylab和pyplot,它之间的区别在于pyplot是封装好的调用matplotlib底层制图库的接口,制图时用户不用关心底层的实现,而pylab则是为了使用者的方便,将numpy和pyplot的功能集中在了一个命名空间中。这么解释,可能还是不太清楚,因此在此次举个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import pylab
 
import numpy as np
 
import matplotlib.pyplot as plt
 
pylab.randn( 2 , 3 )
 
array([[ 1.22356117 , - 0.62786477 , - 0.02927331 ],
[ 1.11739661 , - 1.64112491 , 2.24982297 ]])
 
np.random.randn( 2 , 3 )
 
array([[ - 1.41691502 , - 1.43500335 , - 0.68452086 ],
[ - 0.53925581 , - 0.18478012 , - 0.0126745 ]])
 
pylab.hist([ 1 , 1 , 1 , 2 , 3 , 3 ])
 
plt.hist([ 1 , 1 , 1 , 2 , 3 , 3 ])

从上面的例子可以看在pylab中可以使用numpy中的一些方法,而在pyplot中不能使用numpy的方法;pylab和pyplot都可以制作统计图形。

接下来通过4个常用的统计图形–直方图,条形图,折线图和散点图来介绍首先matplot的使用。直方图和条形图主要刻画的是一维随机变量的分布,折线图和散点图主要刻画的是两个随机变量之间的相关性。首先要展示的是条形图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
N = 5
ind = np.arange(N)
width = 0.35
menMeans = ( 20 , 35 , 30 , 35 , 27 )
menStd = ( 2 , 3 , 4 , 1 , 2 )
 
womenMeans = ( 25 , 32 , 34 , 20 , 25 )
womenStd = ( 3 , 5 , 2 , 3 , 3 )
 
plt.bar(ind, menMeans, width, color = 'r' , yerr = menStd)
 
plt.bar(ind + width, womenMeans, width, color = 'y' , yerr = womenStd)
 
plt.title( 'Men-Women' )

bar
图中红色的矩形代表的是Men,黄色代表的是Women,矩形的高度代表的是改组数据的均值,矩形顶部蓝色短线代表标准差,短线自矩形的顶部分别向上和向下延伸标准差的长度。

接下来要展示的是直方图,

1
2
3
4
5
6
7
8
x1 = 10 + 5 * np.random.randn( 10000 )
x2 = 20 + 5 * np.random.randn( 10000 )
 
num_bins = 50
plt.hist(x1, num_bins, normed = 1 , facecolor = 'green' , alpha = 0.5 )
plt.hist(x2, num_bins, normed = 1 , facecolor = 'blue' , alpha = 0.5 )
plt.title( 'Histogram' )
plt.show()

上面的代码得到的图形

hist

如果是连续性型随机变量,其中的每个矩形的高度表示该对应随机变量的概率密度函数的值,如果是离散型随机变量,其中每个矩形的高度代表对应随机变量的概率。条形图在使用时要事先计算出数据的均值和方差,而使用直方图时,pyplot会自动统计数据的分布;条形图主要刻画数据的样本均值和方差,直方图主要刻画样本的总体分布。

接下来要展示的是折线图,代码如下:

1
2
3
4
5
6
7
import numpy as np
import matplotlib.pyplot as plt
 
x = np.linspace( 0 , 10 , num = 100 )
y = np.sin(x)
plt.plot(x,y)
plt.show()

得到的正弦函数的图形如下:

sine

上面的图可以看做是y=sin(x)在区间[0,10]上的函数图形,每一个x有且只有一个y的值相对应,如果有多个y的值,则应该使用散点图。

1
2
3
4
5
6
7
8
import numpy as np
import matplotlib.pyplot as plt
 
x = np.random.randn( 1000 )
y = np.random.randn( 1000 )
plt.scatter(x,y)
plt.title( 'Scatter' )
plt.show()

得到散点图如下:

本文出自 杂七杂八,转载时请注明出处及相应链接。

本文永久链接: https://www.dcharm.com/?p=15

scatter

本文出自 杂七杂八,转载时请注明出处及相应链接。

本文永久链接: https://www.dcharm.com/?p=15



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值