本文实例讲述了Python基于matplotlib绘制栈式直方图的方法。分享给大家供大家参考,具体如下:
平时我们只对一组数据做直方图统计,这样我们只要直接画直方图就可以了。
但有时候我们同时画多组数据的直方图(比如说我大一到大四跑大学城内环的用时的分布),大一到大四用不同颜色的直方图,显示在一张图上,这样会很直观。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#!/usr/bin/env python # -*- coding: utf-8 -*- # numpy array intorduction #http://matplotlib.org/examples/statistics/histogram_demo_multihist.html import numpy as np import pylab as P import matplotlib d1 = np.array([ 18.46 , 19.15 , 18.13 , 18.30 , 18.07 , 18.24 , 18.26 , 17.14 , 18.44 , 18.06 , 17.44 , 16.57 , 16.34 , 17.21 ]) d1 = d1 / / 1 + (d1 - d1 / / 1 ) / 0.6 d2 = np.array([ 19.33 , 19.06 , 18.10 , 17.55 , 19.55 , 19.13 , 18.54 , 18.30 , 18.36 , 19.59 , 20.01 , 19.17 , 19.30 , 18.54 , 18.35 , 20.04 ]) d2 = d2 / / 1 + (d2 - d2 / / 1 ) / 0.6 d3 = np.array([ 20.52 , 20.41 , 19.20 , 19.04 , 19.09 , 19.01 , 17.49 , 19.18 , 20.01 , 20.11 ]) d3 = d3 / / 1 + (d3 - d3 / / 1 ) / 0.6 d4 = np.array([ 22.02 , 21.03 , 21.06 , 20.46 , 19.46 , 20.15 , 19.49 , 19.43 , 19.51 , 19.39 , 19.33 , 19.18 , 19.13 , 19.22 , 18.46 , 19.07 , 18.57 , 18.45 , 19.17 , 18.41 , 18.30 ]) d4 = d4 / / 1 + (d4 - d4 / / 1 ) / 0.6 x = ([d1,d2,d3,d4]) P.figure() #normed is False is good n, bins, patches = P.hist(x, 12 , [ 16.5 , 22.5 ],normed = 0 , histtype = 'barstacked' , color = [ 'blue' , 'green' , 'red' , 'yellow' ], label = [ ' ' , ' ' , ' ' , ' ' ]) print type (x) P.legend() #legend should be signed after set down the information P.show() |
以上图为例,很明显看到蓝色直方图(大一)跑得最快,黄色(大四)直方图跑得最慢。
希望本文所述对大家Python程序设计有所帮助。