【学习记录】绘制数据的频率分布图的几种方法及进阶

直方图绘制参数详解

生成数据:

import numpy as np
np.random.seed(0)
data = np.random.randn(1000000)*10
data = data.astype(np.int8)

最麻烦的方法:

import matplotlib.pyplot as plt

num_dict = {}

for num in data:
	if num in num_dict:
		num_dict[num] += 1
	else:
		num_dict[num] = 1

keys = list(num_dict.keys())
values = list(num_dict.values())


plt.bar(keys, values)
plt.show()

# cost 377ms

【学习记录】绘制数据的频率分布图的几种方法及进阶_第1张图片

方法一:

from collections import Counter
import matplotlib.pyplot as plt

num_dict = Counter(data)

keys = list(num_dict.keys())
values = list(num_dict.values())


plt.bar(keys, values)
plt.show()

# cost 226ms

【学习记录】绘制数据的频率分布图的几种方法及进阶_第2张图片

方法二:

import matplotlib.pyplot as plt
plt.hist(data, bins=50)
plt.show()

# cost 83ms

【学习记录】绘制数据的频率分布图的几种方法及进阶_第3张图片

官方链接

plt.hist(x, bins=10, range=None, normed=False, weights=None, cumulative=False, bottom=None, 
         histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, 
         color=None, label=None, stacked=False)
  • x:指定要绘制直方图的数据。
  • bins:指定直方图条形的个数。
  • range:指定直方图数据的上下界,默认包含绘图数据的最大值和最小值。
  • normed:是否将直方图的频数转换成频率。
  • weights:该参数可为每一个数据点设置权重。
  • cumulative:是否需要计算累计频数或频率。
  • bottom:可以为直方图的每个条形添加基准线,默认为0。
  • histtype:指定直方图的类型,默认为bar,除此之外,还有barstacked、step和stepfilled
  • align:设置条形边界值的对齐方式,默认为mid,另外还有left和right
  • orientation:设置直方图的摆放方向,默认为垂直方向
  • rwidth:设置直方图条形的宽度
  • log:是否需要对绘图数据进行log变换
  • color:设置直方图的填充色
  • edgecolor:设置直方图边框色
  • label:设置直方图的标签,可通过legend展示其图例
  • stacked:当有多个数据时,是否需要将直方图呈堆叠摆放,默认水平摆放

方法三:

import seaborn as sns
import matplotlib.pyplot as plt
sns.distplot(data, kde=False, bins=50)
plt.show()

# cost 86ms

【学习记录】绘制数据的频率分布图的几种方法及进阶_第4张图片

拓展:

import seaborn as sns
import matplotlib.pyplot as plt
sns.distplot(data)
plt.show()

# cost 4811ms

【学习记录】绘制数据的频率分布图的几种方法及进阶_第5张图片

import seaborn as sns
import matplotlib.pyplot as plt
from scipy.stats import *
sns.distplot(data, fit=norm)
plt.show()

# cost 5019ms

【学习记录】绘制数据的频率分布图的几种方法及进阶_第6张图片

你可能感兴趣的:(【学习记录】绘制数据的频率分布图的几种方法及进阶)