python可视化学习(十六)分布图-连续变量的分布图

#分布图,连续变量的分布图
#导入包
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
#matplottib inline
plt.rcParams['font.sans-serif']=['Simhei']#显示中文
plt.rcParams['axes.unicode_minus']=False #显示负号
#认识函数
plt.hist?
#导入绘图的数据集
df=pd.read_csv('mpg_ggplot2.csv')
df.head()

在这里插入图片描述

#数据进行处理
df_agg=df.loc[:,['displ','class']].groupby('class')
df_agg.head()

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

#提取出每一列车型的发动机排量
vals=[df0['displ'].values.tolist() for i ,df0 in df_agg]
vals

在这里插入图片描述

#绘制直方图
plt.hist(vals,30,stacked=True)

在这里插入图片描述

plt.figure(figsize=(16,8),dpi=60) #创建画布
n,bins,patches = plt.hist(vals,30,stacked=True) #绘制堆叠直方图

#添加装饰
plt.title('Stacked Histogram of $displ$ colored by $class$',fontsize=22) #添加标题
plt.xlabel('displ',fontsize=15) #X轴的标题
plt.ylabel('Frequency',fontsize=15) #Y轴标题
plt.xticks([round(b,1) for b in bins[::3]],fontsize=12) #设定X轴的刻度标签
plt.yticks(fontsize=12) #设定Y轴刻度大小
plt.ylim(0,25)#设定Y轴刻度范围
plt.legend(np.unique(df['class']),frameon=False,fontsize=12);

在这里插入图片描述

#源码及其解读
# Prepare data
x_var = 'displ' #横坐标所需特征         
groupby_var = 'class' #分类变量
df_agg = df.loc[:, [x_var, groupby_var]].groupby(groupby_var) #根据分类变量将所需数据分组
vals = [df[x_var].values.tolist() for i, df in df_agg] #提取出每一组中的数据

# Draw
plt.figure(figsize=(16,9), dpi= 60)#创建画布并设定画布大小
#colors = [plt.cm.Spectral(i/float(len(vals)-1)) for i in range(len(vals))]  #生成颜色列表
colors = [plt.cm.Spectral(i/float(len(vals))) for i in range(len(vals))]
n, bins, patches = plt.hist(vals, 30, stacked=True, density=False, color=colors[:len(vals)]) #绘制直方图

# Decoration
plt.legend({group:col for group, col in zip(np.unique(df[groupby_var]).tolist(), colors[:len(vals)])}) #添加图例
plt.title(f"Stacked Histogram of ${x_var}$ colored by ${groupby_var}$", fontsize=22) #添加标题
plt.xlabel(x_var)   #添加 X轴标题
plt.ylabel("Frequency")#添加 Y轴标题
plt.ylim(0, 25) #设定Y轴刻度范围
plt.xticks(ticks=bins[::3], labels=[round(b,1) for b in bins[::3]])#设定 X轴刻度
plt.show() #本地显示图形  

在这里插入图片描述

plt.cm.Spectral(1) #RGBA色彩空间:红绿蓝+alpha
# import matplotlib.pyplot as plt

# plt.rcParams['font.sans-serif']=['Simhei'] #显示中文
# plt.rcParams['axes.unicode_minus']=False   #显示负号
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
#如果用jupyter notebook则需要这行代码让你的图像显示,如果是jupyterlab则不需要

plt.rcParams['font.sans-serif']=['Simhei'] #显示中文
plt.rcParams['axes.unicode_minus']=False   #显示负号
df=pd.read_csv('mpg_ggplot2.csv')
x_var = 'manufacturer'   #X轴特征
groupby_var = 'class'    #分类标签(颜色标签)
df_agg = df.loc[:, [x_var, groupby_var]].groupby(groupby_var) #根据颜色标签将X轴特征分组
vals = [df[x_var].values.tolist() for i, df in df_agg]  #提取出每组特征
# Draw
plt.figure(figsize=(14,8), dpi= 60) #创建画布
colors = [plt.cm.Spectral(i/float(len(vals)-1)) for i in range(len(vals))]  #创建颜色列表
n, bins, patches = plt.hist(vals, df[x_var].unique().__len__(), stacked=True, density=False, color=colors[:len(vals)]) #绘制堆叠直方图
#_len_返回的是长度
# Decoration
plt.legend({group:col for group, col in zip(np.unique(df[groupby_var]).tolist(), colors[:len(vals)])}) #添加图例
# plt.legend(np.unique(df[groupby_var]),frameon=False,fontsize=15)
plt.title(f"Stacked Histogram of ${x_var}$ colored by ${groupby_var}$", fontsize=22) #添加标题
plt.xlabel(x_var,fontsize=20) #设定X轴标签
plt.ylabel("Frequency",fontsize=20) #设定Y轴标签
plt.ylim(0, 40) #设定Y轴刻度范围
#plt.xticks(ticks=bins, labels=np.unique(df[x_var]).tolist(), rotation=90, horizontalalignment='left',fontsize=16) #设定X轴刻度标签
plt.yticks(fontsize=16)#设定Y轴刻度字体大小
plt.show() #本地显示

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值