Python可视化在量化交易中的应用(14)_Seaborn散点图

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()方法绘制核密度曲线,用以展示中国平安股票价格与交易额之间的分布关系。

python 复制代码
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()方法同时绘制多个图形,用以展示中国平安股票开盘价、收盘价与交易量、交易额之间的分布关系。

添加以下代码:

python 复制代码
# 使用pairplot绘制多维散点图
sns.pairplot(data=df[['open','close','vol','amount']])

# 显示图形
plt.show()

代码运行效果如下图所示:

相关推荐
waterHBO1 小时前
python 爬虫 selenium 笔记
爬虫·python·selenium
编程零零七2 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
2401_858286113 小时前
52.【C语言】 字符函数和字符串函数(strcat函数)
c语言·开发语言
铁松溜达py3 小时前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络
everyStudy3 小时前
JavaScript如何判断输入的是空格
开发语言·javascript·ecmascript
AIAdvocate4 小时前
Pandas_数据结构详解
数据结构·python·pandas
小言从不摸鱼4 小时前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
C-SDN花园GGbond5 小时前
【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
c语言·开发语言·数据结构·排序算法
迷迭所归处6 小时前
C++ —— 关于vector
开发语言·c++·算法
架构文摘JGWZ6 小时前
Java 23 的12 个新特性!!
java·开发语言·学习