2022年 11月 4日

python可视化学习(十七)密度图

#认识绘制密度图的函数
#密度图是一种直方图和密度图的对比
#大多数密度估计是和密度的估计,核计算是比较复杂了
#通俗讲,纵坐标是相对用于不同类别的值
  • 1
  • 2
  • 3
  • 4
#构造数据,满足正态分布
data=np.random.rand(1000)
#画一个简单的密度图
sns.kdeplot(data);
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

**sns.kdeplot()**
> 函数功能
>> 拟合并绘制单变量或双变量核密度估计值  

> 重要参数   
>> data:数据集,可以只输入一个,也可以输入两个   
>> shade:在密度曲线下方加阴影(如果数据是双变量时,填充轮廓)   
>> vertical:控制密度轴向   
>> bw:类似于直方图中的binwidth,用于确定核大小    
>> kernel:核函数(双变量KDE只能使用高斯核)

>>> 核函数种类说明:   
>>> gau:gaussian高斯核(常用)   
>>> cos:cosine余弦     
>>> biw:biweight 四次   
>>> epa:Epanechnikov 抛物线   
>>> tri:triangle三角   
>>> triw:triweight 三次 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
#给核密度图添加一些简单的装饰
sns.kdeplot(data
            ,shade=True       #填充曲线下阴影的控制参数
            #,vertical=True
            ,color='r'   #控制颜色
            ,alpha=0.8  #控制颜色的色彩饱和度
            ,linewidth=3
            ,linestyle='--'
           );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

plt.hist(data);
  • 1

在这里插入图片描述

df = pd.read_csv("mpg_ggplot2.csv")
df.loc[df.cyl==4,'cty'].values
#筛选出气缸数为4的城市里程
c4 = df.loc[df.cyl==4,'cty'].values`在这里插入代码片`

  • 1
  • 2
  • 3
  • 4
  • 5
#绘制图形
sns.kdeplot(c4
            ,shade=True
            ,color='r'
            ,alpha=0.3
            ,label='Cyl=4'
           );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

#提取绘图数据
c4 = df.loc[df.cyl==4,'cty'].values
c5 = df.loc[df.cyl==5,'cty'].values
c6 = df.loc[df.cyl==6,'cty'].values
c8 = df.loc[df.cyl==8,'cty'].values

#创建画布并设定画布尺寸
plt.figure(figsize=(12,8),dpi=60)

#绘制图形
sns.kdeplot(c4,shade=True,color='deeppink',alpha=0.6,label='Cyl = 4')
sns.kdeplot(c5,shade=True,color='green',alpha=0.6,label='Cyl = 5')
sns.kdeplot(c6,shade=True,color='blue',alpha=0.6,label='Cyl = 6')
sns.kdeplot(c8,shade=True,color='orange',alpha=0.6,label='Cyl = 8')

#添加装饰
plt.title('城市里程随气缸数变化密度图',fontsize=20)
plt.xlabel('城市里程(cty)',fontsize=18)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.legend(fontsize=13,loc=0);#loc=0,显示在空余部分
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

在这里插入图片描述

#源代码
#源代码

# Import Data
df = pd.read_csv("mpg_ggplot2.csv") #导入数据集

# Draw Plot
plt.figure(figsize=(12,8), dpi= 60) #创建画布并设定画布大小
sns.kdeplot(df.loc[df['cyl'] == 4, "cty"], shade=True, color="g", label="Cyl=4", alpha=.7)           #绘制气缸数为4的密度曲线
sns.kdeplot(df.loc[df['cyl'] == 5, "cty"], shade=True, color="deeppink", label="Cyl=5", alpha=.7)    #绘制气缸数为5的密度曲线
sns.kdeplot(df.loc[df['cyl'] == 6, "cty"], shade=True, color="dodgerblue", label="Cyl=6", alpha=.7)  #绘制气缸数为6的密度曲线
sns.kdeplot(df.loc[df['cyl'] == 8, "cty"], shade=True, color="orange", label="Cyl=8", alpha=.7)      #绘制气缸数为8的密度曲线

# Decoration
plt.title('Density Plot of City Mileage by n_Cylinders', fontsize=22) #添加标题
plt.legend() #添加图例
plt.show()   #本地显示图形
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述