Seaborn中带回归线的散点图的绘制方法
seaborn中绘制散点图使用的是sns.scatterplot()函数:
sns.scatterplot(x,y,hue,style,size,data,palette,hue_order,hue_norm,sizes,size_order,size_norm,markers,style_order,x_bins,y_bins,units,estimator,ci=95,n_boot=1000,alpha,x_jitter,y_jittere,legend=‘auto’,ax,**kwargs,)
关键常用参数说明:
x, y:可选参数,用于指定数据集中散点图的x轴和y轴数据。
hue:可选参数,用于指定分类变量,根据该变量的不同取值,散点图的颜色会有所区分。
style:可选参数,用于指定分类变量,根据该变量的不同取值,散点图的样式会有所区分。
size:可选参数,用于指定数值变量,根据该变量的不同取值,散点图的大小会有所区分。
data:必需的参数,用于指定数据集。可以是一个Pandas的DataFrame、Numpy的数组、Python的列表或其他类似的数据结构。
palette:可选参数,用于指定颜色的调色板。可以是一个字符串,表示调色板的名称;也可以是一个字典,表示每个分类变量取值对应的颜色。
sizes:可选参数,用于指定散点图的大小范围。可以是一个元组,表示大小的最小值和最大值;也可以是一个列表,表示不同大小的取值范围。
markers:可选参数,用于指定散点图的标记样式。可以是一个字符串,表示标记样式的名称;也可以是一个列表,表示不同分类变量取值对应的标记样式。
alpha:可选参数,用于指定散点图的透明度。可以是一个浮点数,表示透明度的值;也可以是一个字符串,表示透明度的名称。
ax:可选参数,用于指定绘图的坐标轴。如果没有指定,则会创建一个新的坐标轴。
**kwargs:用于传递其他绘图参数,例如图像的标题、标签、颜色等。
在绘制散点图时,我们经常结合回归线,探索各个样本点之间的线性关联关系。
seaborn中绘制回归线使用的是sns.regplot()函数:
sns.regplot(x,y,data,x_estimator,x_bins,x_ci=‘ci’,scatter,fit_reg,ci=95,n_boot=1000,units,seed,order=1,logistic,lowess,robust,logx,x_partial,y_partial,truncate,dropna,x_jitter,y_jitter,label,color,marker=‘o’,scatter_kws,line_kws,ax,)
关键常用参数说明:
x, y:必需的参数,用于指定数据集中散点图的x轴和y轴数据。
data:可选参数,用于指定数据集。可以是一个Pandas的DataFrame、Numpy的数组、Python的列表或其他类似的数据结构。
x_estimator:可选参数,用于指定x轴数据的估计方法。默认值为numpy.mean,表示使用均值作为估计方法;可以设置为其他函数,表示使用对应的估计方法。
x_bins:可选参数,用于指定x轴数据的分组数量。默认值为"auto",表示自动确定分组数量;可以设置为一个整数,表示分组数量。
x_ci:可选参数,用于指定x轴数据的置信区间的大小。默认值为None,表示不显示置信区间;可以设置为一个整数,表示置信区间的大小。
scatter:可选参数,用于指定是否绘制散点图。默认值为True,表示绘制散点图;可以设置为False,表示不绘制散点图。
fit_reg:可选参数,用于指定是否绘制回归线。默认值为True,表示绘制回归线;可以设置为False,表示不绘制回归线。
ci:可选参数,用于指定置信区间的大小。默认值为95,表示使用95%的置信区间;可以设置为其他整数值,表示使用对应大小的置信区间。
order:可选参数,用于指定回归模型的阶数。默认值为1,表示使用一次线性回归模型;可以设置为其他整数值,表示使用对应阶数的回归模型。
scatter_kws:可选参数,用于传递给散点图的其他参数,例如散点的颜色、大小等。
line_kws:可选参数,用于传递给回归线的其他参数,例如线的颜色、线宽等。
ax:可选参数,用于指定绘图的坐标轴。如果没有指定,则会创建一个新的坐标轴。
**kwargs:用于传递其他绘图参数,例如图像的标题、标签、颜色等。
案例展示
在这个案例中,我们使用sns.scatterplot()方法绘制直方图,用sns.regplot()方法绘制核密度曲线,用以展示中国平安股票价格与交易额之间的分布关系。
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# 设置为默认字体
plt.rcParams['font.family'] = 'SimHei'
# 显示负数
plt.rcParams['axes.unicode_minus'] = False
# 导入数据
df = pd.read_excel("2023年一季度A股日线行情.xlsx")
# 将日期列转化为日期格式
df["trade_date"] = df["trade_date"].astype("str").apply(lambda x:x[:4]+"-"+x[4:6]+"-"+x[6:])
# 将日期列转换为日期类型,并设置为索引列
df['trade_date'] = pd.to_datetime(df['trade_date'])
df.set_index('trade_date', inplace=True)
# 筛选出股票代码是"000001.SZ"的股票
df = df[df['ts_code'] == '000001.SZ']
# 使用scatterplot绘制散点图
sns.scatterplot(data=df, x='close', y='amount')
# 添加线性回归线
sns.regplot(data=df, x='close', y='amount')
# 显示图形
plt.show()
代码运行效果如下图所示:
我们在观察特征值与特征值之间的联系时,除了最简单的两个特征值之间的分布关系,还有多个特征值之间的关系。为了方便用户统计多个特征值之间的关系,我们可以选择使用sns.pairplot()函数绘制多张图形,进而观察多个变量之间两两关联的分布特性。
sns.pairplot(data,hue,hue_order,palette,vars,x_vars,y_vars,kind=‘scatter’,diag_kind=‘auto’,markers,height=2.5,aspect=1,corner,dropna,plot_kws,diag_kws,grid_kws,size,)
关键常用参数说明:
data:必需的参数,用于指定数据集。可以是一个Pandas的DataFrame、Numpy的数组、Python的列表或其他类似的数据结构。
hue:可选参数,用于指定分类变量的名称。默认值为None,表示不使用分类变量;可以设置为一个分类变量的名称,表示根据该变量进行分类绘制。
hue_order:可选参数,用于指定分类变量的顺序。默认值为None,表示使用分类变量的唯一值的自然顺序;可以设置为一个列表,表示指定的顺序。
palette:可选参数,用于指定颜色调色板的名称。默认值为None,表示使用默认的颜色调色板;可以设置为一个颜色调色板的名称,例如"Set1"、“Dark2"等。
vars:可选参数,用于指定要绘制的变量。默认值为None,表示绘制所有变量;可以设置为一个变量名列表,表示只绘制指定的变量。
diag_kind:可选参数,用于指定对角线上绘制的图形类型。默认值为"auto”,表示根据变量类型自动选择图形类型;可以设置为"hist",表示绘制直方图;可以设置为"kde",表示绘制核密度估计图;可以设置为None,表示不绘制图形。
markers:可选参数,用于指定散点图的标记样式。默认值为None,表示使用默认的标记样式;可以设置为一个标记样式的名称,例如"."、"o"等。
plot_kws:可选参数,用于传递给散点图的其他参数,例如颜色、标签等。
diag_kws:可选参数,用于传递给对角线图形的其他参数,例如颜色、标签等。
grid_kws:可选参数,用于传递给网格线的其他参数,例如颜色、线宽等。
股票价格、交易量与交易额分布关系可视化展示
在这个案例中,我们使用sns.pairplot()方法同时绘制多个图形,用以展示中国平安股票开盘价、收盘价与交易量、交易额之间的分布关系。
添加以下代码:
# 使用pairplot绘制多维散点图
sns.pairplot(data=df[['open','close','vol','amount']])
# 显示图形
plt.show()
代码运行效果如下图所示: