# 【2.4.2】seaborn两变量图（seaborn-jointplot）

jointplot用于两个变量的作图

## 一、参数说明

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


x, y : strings or vectors
Data or names of variables in data.
data : DataFrame, optional
DataFrame when x and y are variable names.
kind : { “scatter” | “reg” | “resid” | “kde” | “hex” }, optional
Kind of plot to draw.
**stat_fun**c : callable or None, optional
Function used to calculate a statistic about the relationship and annotate the plot. Should map x and y either to a single value or to a (value, p) tuple. Set to None if you don’t want to annotate the plot.
color : matplotlib color, optional
Color used for the plot elements.
size : numeric, optional
Size of the figure (it will be square).
ratio : numeric, optional
Ratio of joint axes size to marginal axes height.
space : numeric, optional
Space between the joint and marginal axes
dropna : bool, optional
If True, remove observations that are missing from x and y.
{x, y}lim : two-tuples, optional
Axis limits to set before plotting.
{joint, marginal, annot}_kws : dicts, optional
Additional keyword arguments for the plot components.
kwargs : key, value pairings
Additional keyword arguments are passed to the function used to draw the plot on the joint Axes, superseding items in the joint_kws dictionary.
Returns:
grid : JointGrid
JointGrid object with the plot on it.


class seaborn.JointGrid(x, y, data=None, size=6, ratio=5, space=0.2, dropna=True, xlim=None, ylim=None) Parameters:

x, y : strings or vectors
Data or names of variables in data.
data : DataFrame, optional
DataFrame when x and y are variable names.
size : numeric
Size of each side of the figure in inches (it will be square).
ratio : numeric
Ratio of joint axes size to marginal axes height.
space : numeric, optional
Space between the joint and marginal axes
dropna : bool, optional
If True, remove observations that are missing from x and y.
{x, y}lim : two-tuples, optional
Axis limits to set before plotting.


• jointplot是画两个变量或者单变量的图像，是对JointGrid类的实现

• x,y为DataFrame中的列名或者是两组数据，data指向dataframe ,kind是你想要画图的类型

• stat_func 用于计算统计量关系的函数

• kind 图形的类型scatter,reg,resid,kde,hex

• space 定义的是上，右图像距离中间图像的距离

• color 定义的是图形的整体颜色

• edgecolor 定义中间图形散点的颜色

• linewidth 定义图形线条或者散点图的大小

• marginal_kws 定义边界上hist的参数，以字典的形式传参

## 二、例子

### 例1：两边带有histogram的散点图

>>> import numpy as np, pandas as pd; np.random.seed(0)
>>> import seaborn as sns; sns.set(style="white", color_codes=True)
>>> g = sns.jointplot(x="total_bill", y="tip", data=tips)


### 例2：散点图和histogram中加入拟合曲线

g = sns.jointplot("total_bill", "tip", data=tips, kind="reg")


### 例3 三点用六边形来代替

g = sns.jointplot("total_bill", "tip", data=tips, kind="hex")


### 例4 KDE图

>>> iris = sns.load_dataset("iris")
>>> g = sns.jointplot("sepal_width", "petal_length", data=iris,
...                   kind="kde", space=0, color="g")


### 例5 散点图+ KDE图

>>> g = (sns.jointplot("sepal_length", "sepal_width",
...                    data=iris, color="k")
...         .plot_joint(sns.kdeplot, zorder=0, n_levels=6))


### 例6 通过向量传递x,y轴

>>> x, y = np.random.randn(2, 300)
>>> g = (sns.jointplot(x, y, kind="hex")
...         .set_axis_labels("x", "y"))


### 例7 给边框上的图形更多的空间

>>> g = sns.jointplot("total_bill", "tip", data=tips,
...                   height=5, ratio=3, color="g")


## 例8 添加pearson

import scipy.stats as sci

sns.jointplot(x='v_ma5',y='price_change',data=stock,kind='reg',stat_func=sci.pearsonr,space=0,color='r')