统计图表-条形图与直方图

1. 条形图

  条形图一般用于分类型变量的展示或探索性分析,特点是横轴代表类别,纵轴(条形图的长度)代表频数或者频率,因此条形图的宽度是没有意义的。

import numpy as np
import matplotlib.pyplot as plt
# 使用jupyter notebook要加上下面的代码以正确显示图片,
%matplotlib inline 

N = 5
y = [20, 10, 30, 15, 25]
x = np.arange(N)

plt.bar(x, y)
plt.show()

在这里插入图片描述
  通过上面简短的代码就能得到一个简单的条形图,为了让画出的条形图更美观一点,我们可以使用以下参数来对条形图进行调整:

1.1 常用参数

  • color:颜色
  • width:条形宽度
  • orientation:控制条形图的方向
plt.bar(x, y, color='g', width=0.4)

在这里插入图片描述

1.2水平显示条形图

  将条形图设置为水平显示有两种方法,一种是将参数orientation设置为’horizontal’;另一种是直接使用plt.barh()函数:

plt.bar(x=0,bottom=x, width=y,height=0.5, color='g', orientation='horizontal')

在这里插入图片描述
  使用plt.barh()函数比直接使用plt.bar()函数要简单一些:

# 水平条线图的另一种实现
plt.barh(x, y, color='g', height=0.5)

在这里插入图片描述

1.3 对比条形图

  对比条形图常用于多总体的分类型数据比较,主要通过使用给类别加上条形图的宽度作为偏移量来实现的:

D1 = [20, 30 , 15, 18]
D2 = [15, 20 , 30, 25]

index = np.arange(4)
bar_width = 0.3

plt.bar(index, D1, width=bar_width, color='r')
plt.bar(index+bar_width, D2, width=bar_width, color='g')

在这里插入图片描述
  利用1.2中的方法,使用plt.barh()就能画出水平的对比条形图:

plt.barh(index, D1, height=bar_width, color='r')
plt.barh(index+bar_width, D2, height=bar_width, color='g')

在这里插入图片描述

1.4 堆积条形图

  在画对比条形图时,我们再类别加上了条形的宽度来对达到并排显示条形的目的;类似地,给一个分类变量的值加上另一个分类变量对应的取值,就是实现堆积的效果:

plt.bar(index, D1, width=bar_width, color='r')
plt.bar(index, D2, width=bar_width, bottom=D1,color='g')

在这里插入图片描述

2. 直方图

  直方图主要是用来观察连续型变量的分布,可以将直方图看作变量分布的一个估计。
  在matplotlib中使用hist函数可以直接画出对应数据的直方图

import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline
# 生成随机样本
mu = 20
sigma = 5
x = mu + sigma * np.random.randn(2000)

plt.hist(x)

在这里插入图片描述

2.1 常用参数

  • color:颜色
  • bins:分组数量
  • density:将y轴转化为频率(频率和为1)
      除了color这个matplotlib的基本方法外,hist函数中还能使用bins’来控制直方图的分组数量:
plt.hist(x, bins=20, color='g', density=True)

在这里插入图片描述  从上图可以看出图片的组数增加了,同时y轴的取值由频数转化为了频率。

2.2 seaborn中的直方图

   seaborn基于 matplot, 导入 seaborn 会修改默认的 matplotlib 配色方案和绘图样式,这会提高图表的可读性和美观性:
   seaborn中通过distplot来画出变量的直方图:

import seaborn as sns
from scipy.stats import norm

x = np.random.gamma(20, size=2000)
plt.figure()
sns.distplot(x)

在这里插入图片描述

2.2.1 常用参数

  • kde:是否显示密度估计曲线的参数,默认为 True。
  • fit: 拟合目标分布
      在seaborn中也可使用color、bins对直方图的颜色和分组数量进行控制。除此之外,还可使用kde参数控制密度函数估计是否显示,fit参数来拟合目标估计。下面我们生成服从 Γ ( 20 , 1 ) \Gamma(20, 1) Γ(20,1) 的随机样本并画出其直方图,密度函数估计图:
import seaborn as sns
from scipy.stats import norm

# 生成伽马分布的随机样本
x = np.random.gamma(20, size=2000)
plt.figure()
sns.distplot(x, bins=40, kde=True, fit=norm, color='g')

在这里插入图片描述
  上图的绿色曲线为样本的概率密度函数估计曲线,黑色曲线为拟合的正态分布的概率密度函数曲线。可见该伽马分布与正态分布十分接近,这符合伽马分布的形状参数越大,它就接近正态分布的性质。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值