博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python制作统计图形
阅读量:6847 次
发布时间:2019-06-26

本文共 2031 字,大约阅读时间需要 6 分钟。

这是我的博客“dcharm”的一篇,用在这里尝试一下云栖社区的博客功能。我的微博:

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

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

import pylabimport numpy as npimport matplotlib.pyplot as pltpylab.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的使用。直方图和条形图主要刻画的是一维随机变量的分布,折线图和散点图主要刻画的是两个随机变量之间的相关性。首先要展示的是条形图

N = 5ind = np.arange(N)width = 0.35menMeans = (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')

直方图

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

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

x1 = 10 + 5 * np.random.randn(10000)x2 = 20 + 5 * np.random.randn(10000) num_bins = 50plt.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.png

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

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

import numpy as npimport matplotlib.pyplot as plt x = np.linspace(0, 10, num=100)y = np.sin(x)plt.plot(x,y)plt.show()
得到的正弦函数的图形如下:

sine.png

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

import numpy as npimport matplotlib.pyplot as plt x = np.random.randn(1000)y = np.random.randn(1000)plt.scatter(x,y)plt.title('Scatter')plt.show()
得到散点图如下:

scatter.png

转载地址:http://lkmul.baihongyu.com/

你可能感兴趣的文章
Prism 4 文档 ---第5章 实现MVVM模式
查看>>
Eclipse中查看JDK类库源代码
查看>>
install_lnmp.sh
查看>>
子数组的和的最大值(包括升级版的首尾相连数组)
查看>>
Java-笔记6-复习
查看>>
C#中Static的妙用
查看>>
poj 2752 前后缀匹配
查看>>
锚点定位偏移问题
查看>>
QTP的那些事—WMI+SQL分析查询工具
查看>>
柯里化
查看>>
LeetCode - Nth Highest Salary
查看>>
海量数据面试题整理
查看>>
9.ORM数据访问
查看>>
第三次作业结对编程
查看>>
sublime使用
查看>>
一言不合就动手系列篇一-仿电商平台前端搜索插件(filterMore)
查看>>
Oracle Split 函数
查看>>
目标跟踪之卡尔曼滤波---理解Kalman滤波的使用预测
查看>>
Git安装和基本使用(1)
查看>>
Swoft 图片上传与处理
查看>>