Python可视化matplotlib13-iris鸢尾花数据集|histogram直方图

直方图(histogram)展示离散型数据分布情况,直观理解为将数据按照一定规律分区间,统计每个区间中落入的数据频数,绘制区间与频数的柱状图即为直方图。

目录

欢迎随缘关注@pythonic生物人

1、绘图数据集准备

2、matplotlib.pyplot.hist直方图参数详解

3、参考资料


1、绘图数据集准备

 使用sklearn内置的鸢尾花iris数据集,数据集详细介绍见:Matplotlib-02-iris鸢尾花数据集|scatter散点图

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
from sklearn import datasets 
iris=datasets.load_iris()
x, y = iris.data, iris.target
pd_iris = pd.DataFrame(np.hstack((x, y.reshape(150, 1))),columns=['sepal length(cm)','sepal width(cm)','petal length(cm)','petal width(cm)','class'] )

选取pd_iris['sepal length(cm)']数据绘制直方图 ,查看数据基本情况:

pd_iris['sepal length(cm)'].head()
0    5.1
1    4.9
2    4.7
3    4.6
4    5.0
Name: sepal length(cm), dtype: float64

pd_iris['sepal length(cm)'].describe()
count    150.000000
mean       5.843333
std        0.828066
min        4.300000
25%        5.100000
50%        5.800000
75%        6.400000
max        7.900000
Name: sepal length(cm), dtype: float64

2、matplotlib.pyplot.hist直方图参数详解

修改对应参数,即可体验对应参数的功能;

大部分参数使用默认值即可。

import palettable
import random
plt.figure(dpi=150)
data=pd_iris['sepal length(cm)']
n, bins, patches=plt.hist(x=data,
                          ##箱子数(bins)设置,以下三种不能同时并存
                          #bins=20,#default: 10
                          #bins=[4,6,8],#分两个箱子,边界分别为[4,6),[6,8]
                          #bins='auto',# 可选'auto', 'fd', 'doane', 'scott', 'stone', 'rice', 'sturges', or 'sqrt'.
                          #选择最合适的bin宽,绘制一个最能反映数据频率分布的直方图 
                         
                          #range=(5,7),#最左边和最右边箱子边界,不指定时,为(x.min(), x.max())
                          #density=True, #默认为False,y轴显示频数;为True y轴显示频率,频率统计结果=该区间频数/(x中总样本数*该区间宽度)
                          #weights=np.random.rand(len(x)),#对x中每一个样本设置权重,这里随机设置了权重
                          cumulative=False,#默认False,是否累加频数或者频率,及后面一个柱子是前面所有柱子的累加
                          bottom=0,#设置箱子y轴方向基线,默认为0,箱子高度=bottom to bottom + hist(x, bins)
                          histtype='bar',#直方图的类型默认为bar{'bar', 'barstacked', 'step', 'stepfilled'}
                          align='mid',#箱子边界值的对齐方式,默认为mid{'left', 'mid', 'right'}
                          orientation='vertical',#箱子水平还是垂直显示,默认垂直显示('vertical'),可选'horizontal'
                          rwidth=1.0,#每个箱子宽度,默认为1,此时显示50%
                          log=False,#y轴数据是否取对数,默认不取对数为False
                          color=palettable.colorbrewer.qualitative.Dark2_7.mpl_colors[3],
                          label='sepal length(cm)',#图例
                          #normed=0,#功能和density一样,二者不能同时使用
                          facecolor='black',#箱子颜色 
                          edgecolor="black",#箱子边框颜色
                          stacked=False,#多组数据是否堆叠
                          alpha=0.5#箱子透明度
                         )
plt.xticks(bins)#x轴刻度设置为箱子边界

for patch in patches:#每个箱子随机设置颜色
    patch.set_facecolor(random.choice(palettable.colorbrewer.qualitative.Dark2_7.mpl_colors))

#直方图三个返回值
print(n)#频数
print(bins)#箱子边界
print(patches)#箱子数

#直方图绘制分布曲线
plt.plot(bins[:10],n,'--',color='#2ca02c')
plt.hist(x=[i+0.1 for i in data],label='new sepal length(cm)',alpha=0.3)
plt.legend()

[ 9. 23. 14. 27. 16. 26. 18. 6. 5. 6.]

[4.3 4.66 5.02 5.38 5.74 6.1 6.46 6.82 7.18 7.54 7.9 ]

 

  Python可视化matplotlib13-iris鸢尾花数据集|histogram直方图_第1张图片

3、参考资料

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.hist.html?highlight=hist#matplotlib.pyplot.hist

 欢迎随缘关注@pythonic生物人

 

你可能感兴趣的:(Python可视化,python,matplotlib,直方图,数据分析,数据可视化)