seaborn系列 (15) | 双变量关系图jointplot()

双变量关系图

在默认情况下双变量关系图是散点图与直方图组合的联合直方图,可以通过设置kind来改变联合直方图。

函数原型

seaborn.jointplot(x, y, data=None, kind='scatter', 
                  stat_func=None, color=None, height=6,
                  ratio=5, space=0.2, dropna=True, 
                  xlim=None, ylim=None, joint_kws=None,
                  marginal_kws=None, annot_kws=None, **kwargs)

参数解读

在这里插入图片描述

x,y,hue:数据字段变量名(如上表,date,name,age,sex为数据字段变量名)
data: DataFrame

kind:{"scatter"| "reg"| "resid"| "kde"| "hex"}
作用:指定要绘制的类型

color : matplotlib color

height : 数字
作用:指定图的大小(图是正方形的)

ratio:数字
作用:指定主轴(x,y轴)与边缘轴(正方形四边除x,y轴外的其它轴)高度的比率

space:数字
作用:指定主轴与边缘轴之间的空间

dropna : bool
作用:如果为True,则删除x和y中缺少的观测值

案例教程

案例代码已上传:Github地址

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
#设置风格样式
sns.set(style="white", color_codes=True)
# np.random.seed(num),指定了num则表示生成的随机数是可预测的
np.random.seed(0)
# 构建数据
tips = sns.load_dataset("tips")
"""
案例1:
绘制散点图,边缘为直方图:联合直方图
"""
sns.jointplot(x="total_bill", y="tip", data=tips)
plt.show()

在这里插入图片描述

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
#设置风格样式
sns.set(style="white", color_codes=True)
# np.random.seed(num),指定了num则表示生成的随机数是可预测的
np.random.seed(0)
# 构建数据
tips = sns.load_dataset("tips")
"""
案例2:
在联合添加回归和核密度拟合
"""
sns.jointplot("total_bill", "tip", data=tips, kind="reg")
plt.show()

在这里插入图片描述

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
#设置风格样式
sns.set(style="white", color_codes=True)
# np.random.seed(num),指定了num则表示生成的随机数是可预测的
np.random.seed(0)
# 构建数据
tips = sns.load_dataset("tips")
"""
案例3:
使用六边形点代替联合直方图中的圆形散点
"""
sns.jointplot("total_bill", "tip", data=tips, kind="hex")
plt.show()

在这里插入图片描述

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
#设置风格样式
sns.set(style="white", color_codes=True)
# np.random.seed(num),指定了num则表示生成的随机数是可预测的
np.random.seed(0)
# 构建数据
iris = sns.load_dataset("iris")
"""
案例4:
将散点图和直方图均替换为核密度估计
"""
sns.jointplot("sepal_width", "petal_length", data=iris,
              kind="kde", space=0, color="g")
plt.show()

在这里插入图片描述

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
#设置风格样式
sns.set(style="white", color_codes=True)
# np.random.seed(num),指定了num则表示生成的随机数是可预测的
np.random.seed(0)
# 构建数据
iris = sns.load_dataset("iris")
"""
案例5:
绘制散点图,并添加联合密度估计
"""
g = (sns.jointplot("sepal_length", "sepal_width",
                   data=iris, color="k")
     .plot_joint(sns.kdeplot, zorder=0, n_levels=6))
plt.show()

在这里插入图片描述

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
#设置风格样式
sns.set(style="white", color_codes=True)
"""
案例6:
随机生成300个(x,y)二维数据,并指定x,y轴
"""
x, y = np.random.randn(2, 300)
(sns.jointplot(x, y, kind="hex").set_axis_labels("x", "y"))
plt.show()

在这里插入图片描述

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
#设置风格样式
sns.set(style="white", color_codes=True)
# np.random.seed(num),指定了num则表示生成的随机数是可预测的
np.random.seed(0)
# 构建数据
tips = sns.load_dataset("tips")
"""
案例7:
通过指定height来设置图的大小
"""
sns.jointplot("total_bill", "tip", data=tips,
              height=5, ratio=3, color="g")
plt.show()

在这里插入图片描述

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
#设置风格样式
sns.set(style="white", color_codes=True)
# np.random.seed(num),指定了num则表示生成的随机数是可预测的
np.random.seed(0)
# 构建数据
tips = sns.load_dataset("tips")
"""
案例8:
其他一些参数的设置效果
"""
sns.jointplot("petal_length", "sepal_length", data=iris,
              marginal_kws=dict(bins=15, rug=True),
              annot_kws=dict(stat="r"),
              s=40, edgecolor="w", linewidth=1)
plt.show()

在这里插入图片描述

案例地址

上述案例代码已上传:Github地址
Github地址https://github.com/Vambooo/SeabornCN

更多技术干货在公众号:数据分析与可视化学研社

### 如何使用Python绘制双变量分布图 #### 使用Matplotlib绘制简单散点图 为了可视化两个连续变量间的关系,可以采用散点图的形式。这种图表有助于观察两组数据间的潜在模式或关联。 ```python import matplotlib.pyplot as plt import numpy as np # 创建一些随机样本数据 x = np.random.rand(50) y = np.random.rand(50) plt.figure(figsize=(8, 6)) plt.scatter(x, y, color='blue', marker='o') plt.title('Scatter Plot of Two Variables') plt.xlabel('Variable X') plt.ylabel('Variable Y') plt.grid(True) plt.show() ``` 此段代码展示了如何利用`matplotlib`库中的`scatter()`方法来创建一个基本的二维散点图[^1]。 #### 利用Seaborn进行更复杂的双变量分析 对于更加复杂的数据集以及希望获得更为美观且信息量更大的图像时,则推荐使用基于Matplotlib之上的高级接口——Seaborn。特别是其中的`pairplot()`函数非常适合探索多维数据集中各特征之间可能存在的联系。 ```python import seaborn as sns import pandas as pd # 构建示例DataFrame对象 df = pd.DataFrame({ 'A': np.random.randn(100), 'B': np.random.randn(100)*2, }) sns.pairplot(df) plt.show() ``` 上述脚本说明了怎样借助于Seaborn快速生成一对多类型的比较视图,在这里不仅限于单纯的散点形式,还包括沿对角线位置处的一元分布表示(如直方图),从而提供了一个全面了解各个属性相互作用的机会[^3]。 另外,如果仅需专注于特定的两个字段并期望得到带有回归拟合曲线的结果,那么可以直接调用`sns.jointplot()`: ```python sns.jointplot(data=df, x="A", y="B", kind="reg") plt.show() ``` 这段程序片段能够帮助更好地理解目标变量与其他解释因子之间的定量关系,并且支持多种绘图样式的选择,比如散点加回归线(`kind="reg"`), 六边形箱型图 (`kind="hex"`) 或者核密度估计图 (`kind="kde"`) 等不同选项。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脑机接口社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值