python 教你多方面绘制直方图

直方图绘制参数详解

python中直方图函数hist(),调用形式如下:

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:当有多个数据时,是否需要将直方图呈堆叠摆放,默认水平摆放

官方链接:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.hist.html#matplotlib.pyplot.hist

绘制直方图实例

# matplotlib模块绘制直方图
# 读入数据
Titanic = pd.read_csv('titanic_train.csv')
# 检查年龄是否有缺失
any(Titanic.Age.isnull())
# 不妨删除含有缺失年龄的观察
Titanic.dropna(subset=['Age'], inplace=True)
# 绘制直方图
plt.hist(x = Titanic.Age, # 指定绘图数据
         bins = 20, # 指定直方图中条块的个数
         color = 'steelblue', # 指定直方图的填充色
         edgecolor = 'black' # 指定直方图的边框色
         )
# 添加x轴和y轴标签
plt.xlabel('年龄')
plt.ylabel('频数')
# 添加标题
plt.title('乘客年龄分布')
# 显示图形
plt.show()

数据:
在这里插入图片描述
绘图:
在这里插入图片描述

绘制直方图与核密度图

# Pandas模块绘制直方图和核密度图
# 读入数据
Titanic = pd.read_csv('titanic_train.csv')
# 绘制直方图
Titanic.Age.plot(kind = 'hist', bins = 20, color = 'steelblue', edgecolor = 'black', normed = True, label = '直方图')
# 绘制核密度图
Titanic.Age.plot(kind = 'kde', color = 'red', label = '核密度图')
# 添加x轴和y轴标签
plt.xlabel('年龄')
plt.ylabel('核密度值')
# 添加标题
plt.title('乘客年龄分布')
# 显示图例
plt.legend()
# 显示图形
plt.show()

在这里插入图片描述

根据数据需要手动设置x轴刻度:

# 导入数据
import pandas as pd
import matplotlib.pyplot as plt
f = open(r'C:data\boston.csv')
data = pd.read_csv(f)

# 绘制直方图
data.RAD.plot(kind = 'hist', bins = 30, color = 'steelblue', edgecolor = 'black', normed = True, label = '直方图')
# 绘制核密度图
data.RAD.plot(kind = 'kde', color = 'red', label = '核密度图')
# 添加x轴和y轴标签
plt.xlabel('距离高速公路')
plt.ylabel('核密度值')
plt.xticks([-10,-5,0,1,2,3,4,5,6,7,8,9,20,25])    #根据分布频率手动设置x轴的刻度
# 添加标题
plt.title('距离高速公路分布')
# 显示图例
plt.legend()
# 显示图形
plt.show()

在这里插入图片描述
在这里插入图片描述

seaborn模块绘制分组的直方图

# seaborn模块绘制分组的直方图和核密度图
# 读入数据
Titanic = pd.read_csv('titanic_train.csv')
# 取出男性年龄
Age_Male = Titanic.Age[Titanic.Sex == 'male']
# 取出女性年龄
Age_Female = Titanic.Age[Titanic.Sex == 'female']

# 绘制男女乘客年龄的直方图
sns.distplot(Age_Male, bins = 20, kde = False, hist_kws = {'color':'steelblue'}, label = '男性')
# 绘制女性年龄的直方图
sns.distplot(Age_Female, bins = 20, kde = False, hist_kws = {'color':'purple'}, label = '女性')
plt.title('男女乘客的年龄直方图')
# 显示图例
plt.legend()
# 显示图形
plt.show()

在这里插入图片描述

seaborn模块绘制核密度图

# 读入数据
Titanic = pd.read_csv('titanic_train.csv')
# 绘制男女乘客年龄的核密度图
sns.distplot(Age_Male, hist = False, kde_kws = {'color':'red', 'linestyle':'-'}, 
             norm_hist = True, label = '男性')
# 绘制女性年龄的核密度图
sns.distplot(Age_Female, hist = False, kde_kws = {'color':'black', 'linestyle':'--'}, 
             norm_hist = True, label = '女性')
plt.title('男女乘客的年龄核密度图')
# 显示图例
plt.legend()
# 显示图形
plt.show()

在这里插入图片描述

原创文章 58 获赞 115 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ywsydwsbn/article/details/105894636