python 中直方图绘制 - LiErRui

时间:2024-03-08 10:46:27

python 中直方图绘制

一、直方图绘制参数详解

1、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

①绘制直方图实例

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

      

 ②绘制直方图与核密度图

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

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

 1 # 导入数据
 2 import pandas as pd
 3 import matplotlib.pyplot as plt
 4 f = open(r\'C:\Users\Administrator.PC-20160806EWJL\Desktop\整理文件\boston数据简介\data\boston.csv\')
 5 data = pd.read_csv(f)
 6 
 7 # 绘制直方图
 8 data.RAD.plot(kind = \'hist\', bins = 30, color = \'steelblue\', edgecolor = \'black\', normed = True, label = \'直方图\')
 9 # 绘制核密度图
10 data.RAD.plot(kind = \'kde\', color = \'red\', label = \'核密度图\')
11 # 添加x轴和y轴标签
12 plt.xlabel(\'距离高速公路\')
13 plt.ylabel(\'核密度值\')
14 plt.xticks([-10,-5,0,1,2,3,4,5,6,7,8,9,20,25])    #根据分布频率手动设置x轴的刻度
15 # 添加标题
16 plt.title(\'距离高速公路分布\')
17 # 显示图例
18 plt.legend()
19 # 显示图形
20 plt.show()

      

 ③seaborn模块绘制分组的直方图

 1 # seaborn模块绘制分组的直方图和核密度图
 2 # 读入数据
 3 Titanic = pd.read_csv(\'titanic_train.csv\')
 4 # 取出男性年龄
 5 Age_Male = Titanic.Age[Titanic.Sex == \'male\']
 6 # 取出女性年龄
 7 Age_Female = Titanic.Age[Titanic.Sex == \'female\']
 8 
 9 # 绘制男女乘客年龄的直方图
10 sns.distplot(Age_Male, bins = 20, kde = False, hist_kws = {\'color\':\'steelblue\'}, label = \'男性\')
11 # 绘制女性年龄的直方图
12 sns.distplot(Age_Female, bins = 20, kde = False, hist_kws = {\'color\':\'purple\'}, label = \'女性\')
13 plt.title(\'男女乘客的年龄直方图\')
14 # 显示图例
15 plt.legend()
16 # 显示图形
17 plt.show()

 ④seaborn模块绘制核密度图

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