-
引入
什么是直方图呢?
直方图(Histogram),又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。
直方图是数值数据分布的精确图形表示。 这是一个连续变量(定量变量)的概率分布的估计,并且被卡尔·皮尔逊(Karl Pearson)首先引入。它是一种条形图。 为了构建直方图,第一步是将值的范围分段,即将整个值的范围分成一系列间隔,然后计算每个间隔中有多少值。 这些值通常被指定为连续的,不重叠的变量间隔。 间隔必须相邻,并且通常是(但不是必须的)相等的大小。
直方图也可以被归一化以显示“相对”频率。 然后,它显示了属于几个类别中的每个案例的比例,其高度等于1。简单来说,直方图间隔必须是要相邻,默认是频数作为纵坐标,当然也可以将其转化为频率。
- 第一种画法:
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
import matplotlib.pyplot as plt
%matplotlib inline
# 第一种
s = Series(np.random.randint(0,100,size=50))
# density 表示 归一化 即将默认的 频数分布 ---->>> 频率分布
# 旧版本是 使用 normed = True 貌似 比较新的版本 使用这个参数会爆出废弃警告,提示需要使用density
s.plot(kind='hist',range=[0,100],bins=5,density=True)
- 第二种画法
# 第二种
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.random.randint(0,100,size=50)
plt.hist(x,bins=5,range=[0,100],density=True)
# 绘制网格线 看的比较清晰一些
plt.grid()
- 第三种
# 第三种
from pyecharts.charts import Bar
from pyecharts import options as opts
import numpy as np
from example.commons import Faker
x = np.linspace(0,100,num=5).tolist()
# 由于笔者目前还没有找到 pyecharts 频数 转化成频率的接口 这里手动转化成频率直方图
y = np.random.randint(30,100,size=5)
y = (y / sum(y)).round(2).tolist()
# 参数 color 接收的是 十六进制 颜色
color = Faker.rand_color()
def bar_histogram() -> Bar:
c = (
Bar()
.add_xaxis(x,)
.add_yaxis("商家A", y, category_gap=0, color=color)
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-直方图"),
yaxis_opts=opts.AxisOpts(name='我是y轴'),xaxis_opts=opts.AxisOpts(name='我是x轴')
)
)
return c
bar_histogram().render_notebook()
# ps 如果不习惯 链式调用的话 可以使用普通的方法调用 具体例子 看我之前的博客