seaborn直方图、散点图与回归分析图的绘制

本文介绍了使用Seaborn库绘制直方图、散点图的方法,并展示了如何进行回归分析。通过实例演示了不同图表的绘制过程及参数调整技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习了seaborn的基本风格操作设置之后我们便操作seaborn学习直方图、散点图的绘制方法,以及对数据进行回归分析的方法(本文使用jupyter notebook为开发环境)。

  • 直方图的绘制
    首先我们导入必须的包以及matplotlib的魔法方法,使得我们绘制的图象能直接显示;并为随机数设置种子,使得每次执行相同方法产生相同的随机数。
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

sns.set(color_codes=True)
np.random.seed(sum(map(ord, 'distributions')))

# 当我们设置相同的seed,每次生成的随机数相同。
# 如果不设置seed,则每次会生成不同的随机数
# map() 会根据提供的函数对指定序列做映射。
# 即返回'distributions'该字符串每个字母的二进制数
# 并用sum函数求和,将和作为种子,这里似乎是习惯上的写法。

运用distplot函数进行直方图的绘制:

# 直方图的绘制
x = np.random.normal(size=100) # 产生一组数量为100的高斯分布数据
sns.distplot(x, kde=True) # kde控制是否显示核密度估计图

结果如图:
这里写图片描述

displot可选参数如下:(参考官方文档)

a : Series, 1d-array, or list.

Observed data. If this is a Series object with a name attribute, the name will be used to label the data axis.

bins : argument for matplotlib hist(), or None, optional #设置矩形图数量

Specification of hist bins, or None to use Freedman-Diaconis rule.

hist : bool, optional #控制是否显示条形图

Whether to plot a (normed) histogram.

kde : bool, optional #控制是否显示核密度估计图

Whether to plot a gaussian kernel density estimate.

rug : bool, optional #控制是否显示观测的小细条(边际毛毯)

Whether to draw a rugplot on the support axis.

fit : random variable object, optional #控制拟合的参数分布图形

An object with fit method, returning a tuple that can be passed to a pdf method a positional arguments following an grid of values to evaluate the pdf on.

{hist, kde, rug, fit}_kws : dictionaries, optional

Keyword arguments for underlying plottin
  • 散点图的绘制
    利用jointplot()函数进行散点图的绘制
# 绘制散点图
# 生成指定均值与协方差的200个数据
# 协方差数据一般以元组形式给出,表示某数的次方
import pandas as pd
mean, cov = [0, 1], [(1, .5), (.5, 1)]
data = np.random.multivariate_normal(mean, cov, 1000)
df = pd.DataFrame(data, columns=['x', 'y'])

结果如下:
这里写图片描述
可以看出来散点图的xy轴上还有数据分布的直方图。
如果我们数据较多,会发现点的分布过于密集,无法查看直观的分布状况。这时我们指定kind参数,使图变成蜂窝状的显示:

sns.jointplot(x='x', y='y', data=df, kind='hex', size=(8))

结果如图:
这里写图片描述

我们还可以通过with语句与axes_style()函数的连用使得我们暂时的改变绘图风格,使得最终图像成为黑白间隔的风格。

with sns.axes_style('white'):
    sns.jointplot(x='x', y='y', data=df, kind='hex', color='k', size=(9))

结果如图:
这里写图片描述
我们可以通过改变具体参数或调用函数,做出更独特的图(请自行查阅官方文档)。

  • 成对数据的显示
    我们载入seaborn的内置数据iris(鸢尾花),用pairplot()函数显示数据。
# 正对角线表示一维  非对角线表示二维
iris = sns.load_dataset('iris')
sns.pairplot(iris)

这里写图片描述
正对角线的数据代表相同的数据集。

  • 通过数据进行回归分析
    调入小费数据,对小费数据进行回归分析
tips = sns.load_dataset('tips')
# tips.head()

regplot()和lmplot()都可以绘制回归方程,但是初学者推荐用regplot()
代码如下:

sns.set_style('whitegrid')
plt.figure(figsize=(9,6))
sns.regplot(x='total_bill', y='tip', data=tips)

结果如图:
这里写图片描述
如果我们的x值设定为size则会发现结果有些不适合于观察,大体为竖直的直线。

plt.figure(figsize=(9,6))
sns.regplot(x='size', y='tip', data=tips)

这里写图片描述
这时我们要设定一个x的偏离值,代码如下:

plt.figure(figsize=(9,6))
# 设置偏离值
sns.regplot(x='size', y='tip', data=tips, x_jitter=.05)

这里写图片描述

总结
seaborn的应用比matplotlib更加简便一些,我们可以利用几行语句便绘制出风格鲜明的图例,但是seaborn说白了还只是一个工具罢了,我们不用很理解每一个参数代表什么或者记忆那些绘图函数,必要时查看官方文档即可。

Seaborn是在matplotlib的基础上进行了更高级的封装,可以更方便地绘制各种精美和方便分析数据的表。其中,直方图Seaborn中的一种常见表之一。直方图用来展示数据的分布情况,通过将数据划分为不同的分组(也称为bin),并统计每个分组中的数据数量来展示数据的分布情况。 在Seaborn中,通过histplot函数可以绘制直方图。可以使用不同的参数来控制直方图的外观和展示方式。例如,可以自定义直方图的颜色、线条样式和填充方式等。另外,还可以添加边界箱线(boxplot)来同时展示数据的分布和离群值的情况。 此外,Seaborn还提供了边际(marginal plot)的功能。边际可以很好地展示两个数值变量之间的关系。通常中央表显示两个变量的相关性,可以是散点图、hexbin、2D直方图或2D密度。边缘通常在顶部和右侧,使用直方图或密度显示两个变量的分布。可以使用kind参数来指定不同类型的边际,如scatter(散点图)、reg(边界回归)、resid(边界残差)、kde(边界核密度)或hex(边界六角)。 下面是使用Seaborn绘制直方图的示例代码: import seaborn as sns sns.histplot(data=df, x="sepal_length") 这段代码将通过Seaborn绘制一个直方图,其中数据来自DataFrame df,x轴表示sepal_length列的数据。你可以根据需要进行相应的修改和定制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python-seaborn库数据可视化{直方图散点图、箱线、变量关系、热力、条形}](https://blog.csdn.net/weixin_57501965/article/details/126625267)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [[seaborn] seaborn学习笔记3-直方图Histogramplot](https://blog.csdn.net/LuohenYJ/article/details/90704424)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wangbowj123

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

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

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

打赏作者

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

抵扣说明:

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

余额充值