本文以iris数据集为例进行说明,数据集长这样

当我们使用seaborn 0.11.2绘制两个特征(萼片和花瓣的长度)的联合KDE图(等高线图)时,如果采用基本方法,x,y就是俩方向轴(从iris_data的列里面挑),data数据源,kind是kde(kernel density estimate), 核密度估计简介

import pandas as pd
pd.plotting.register_matplotlib_converters()
import matplotlib.pyplot as plt
import seaborn as sns
iris_filepath = "visual/iris.csv"
iris_data = pd.read_csv(iris_filepath, index_col="Id")
sns.jointplot(x='Petal Length (cm)', y='Sepal Width (cm)',data= iris_data, 
              kind="kde",
plt.show()

结果是这样

如果我们要把三种鸢尾花分开,可以改一行代码

sns.jointplot(x='Petal Length (cm)', y='Sepal Width (cm)',data= iris_data, 
              kind="kde",
              hue='Species'

可见,三种鸢尾花的分布被分开了

也许对于普通的需求而言,这样已经足够,但对于商用可视化而言是不够的,比如等高线没有层次感,色彩单调等问题。

下面是我boss的要求:中间的图要等高线变化对应色彩的变化,两边的图曲线下方加阴影,加上标题(doge),另外还问我能不能改改颜色...

对于这合理(qi guai)的要求,我们来改代码

1.中间图的等高线变化对应着色彩的变化

我们给它加上阴影,对于单分布的代码改一哈

sns.jointplot(x='Petal Length (cm)', y='Sepal Width (cm)',data= iris_data, 
              kind="kde",
              shade = True,

 然后是三个分布的

sns.jointplot(x='Petal Length (cm)', y='Sepal Width (cm)',data= iris_data, 
              hue='Species',
              kind="kde",
              shade = True,

 这边重叠的有点丑,别急,我们改点透明度

sns.jointplot(x='Petal Length (cm)', y='Sepal Width (cm)',data= iris_data, 
              hue='Species',
              kind="kde",
              shade = True,
              joint_kws=dict(alpha =0.6)

其中,joint_kws是中间那个图的属性,要啥都可以往里面扔,它只要接受包含属性一个字典就行了,所以代码改成这样结果也是一样的啦

sns.jointplot(x='Petal Length (cm)', y='Sepal Width (cm)',data= iris_data, 
              hue='Species',
              kind="kde",
              joint_kws=dict(alpha =0.6,shade = True,)

2.边上两个图加阴影

对于这种无理要求,有的pandas版本是自带这玩意儿的,但如果是我这种比较倒霉的人,就没有(因为pandas版本),所以我们继续改代码(唉声叹气)

对于单分布,marginal_kws和joint_kws道理一样,但marginal_kws是管上边和右边那个图的

sns.jointplot(x='Petal Length (cm)', y='Sepal Width (cm)',data= iris_data,              
              kind="kde",
              joint_kws=dict(shade = True,),
              marginal_kws=dict(shade=True)

 对于三分布

sns.jointplot(x='Petal Length (cm)', y='Sepal Width (cm)',data= iris_data,              
              kind="kde",
              hue='Species',
              joint_kws=dict(alpha =0.6,shade = True,),
              marginal_kws=dict(shade=True)

3.改颜色

我们使用调色盘(Palette)改颜色,为了演示,我随便找了一个,注意:单分布和多分布调色盘

调色盘初始化方法不同

对于单分布,中间图的变化可以用cmap改

pal = sns.color_palette("CMRmap",as_cmap=True)
sns.jointplot(x='Petal Length (cm)', y='Sepal Width (cm)',data= iris_data,              
              kind="kde",
              cmap=pal,
              joint_kws=dict(alpha =0.6,shade = True),
              marginal_kws=dict(shade=True)

 对于三分布,我们这样写,本质上pal和pal2都是含颜色的列表,由于是三分布,我们就在palette=的那行,取列表的前三个元素

pal2 = sns.color_palette("CMRmap")
sns.jointplot(x='Petal Length (cm)', y='Sepal Width (cm)',data= iris_data, 
              kind="kde",
              joint_kws=dict(shade = True,alpha=0.5),
              marginal_kws=dict(shade=True,color='g'),
              palette=pal2[0:3],
              hue='Species')

 好啦,我滴任务完成了!

等等,标题没加(doge)

plt.title('看了那么多,喜欢就点个赞吧')
数据可视化:把玩一下seaborn(一) 最近刚开始学习数据可视化,第一个任务就是了解并完成seaborn(一个python处理数据可视化的库)的官方教程,其他数据可视化的内容会后续更新。seaborn在调用数据的时候会有一些数据库相关的操作,例如data=data=diamonds.sort_values("color")这里就不解释了 DataFrame.hist() : 直接打包调用matplotlib.pyplot.hist() hist()命令的细节: https://matplotlib.org/api/_as_gen/matplotlib.pyplot.hist.html ccss.s3.plot.hist() plt.hist(ccss.s3) 用seaborn实现 seaborn.histplot()可被看作是matplotlib.pyplot.hist()在功能上的高度强化版。
          两个变量的二元分布可视化也很有用。在Seaborn最简单的方法是使用jointplot()函数,该函数可以创建一个多面板形,比如散点、二维直方、核密度估计等,以显示两个变量之间的双变量关系及每个变量在单独坐标轴上的单变量分布。           jointplot()函数的语法格式
正则表达式 字符 含义 模式字符串 匹配字符串 普通字符串 匹配自身 adc adc .匹配任意除换行符外的字符 a.c abc \转义字符,使后一个字符改变原来的意思 a\c;a\c a.c;a\c 匹配前一个字符0次或者无限次 abc* ;adccc +匹配前一个字符1
核函数密度估计核函数密度估计函数原型参数解读案例教程案例地址 核函数密度估计 核函数密度估计kdeplot(),该主要用来拟合并绘制单变量或双变量核密度估计值。 seaborn.kdeplot(data, data2=None, shade=False, vertical=False, kernel='gau', bw='scott', ax=plt.subplot(1,2,1) sns.distplot(train_data['V0'],fit=stats.norm) ax=plt.subplot(1,2,2) res = stats.probplot(train_data['V0'], plot=plt) 2、多个代码 train_cols = 6 train_rows = len(train_data.columns) plt.figure(f