返回介绍

6.4 seaborn

发布于 2024-01-27 22:10:03 字数 3715 浏览 0 评论 0 收藏 0

seaborn 简化了在 Python 中创建信息丰富的统计图表的过程。它是在 matplotlib 基础上开发的,支持 numpy 和 pandas 中的数据结构,并集成了 scipy 和 statsmodels 中的统计程序。

seaborn 可以创建标准统计图,包括直方图、密度图、条形图、箱线图和散点图。它可以对成对变量之间的相关性、线性与非线性回归模型以及统计估计的不确定性进行可视化。它可以用来在评估变量时检查变量之间的关系,并可以建立统计图矩阵来显示复杂的关系。它有内置的主题和调色板,可以用来制作精美的图表。最后,因为它是建立在 matplotlib 上的,所以你可以使用 matplotlib 的命令来对图形进行更深入的定制。

下面的脚本 seaborn_plots.py 演示了如何使用 seaborn 创建各种统计图:

#!/usr/bin/env python3
import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pylab import savefig
sns.set(color_codes=True)
# 直方图
x = np.random.normal(size=100)
sns.distplot(x, bins=20, kde=False, rug=True, label="Histogram w/o Density")
sns.axlabel("Value", "Frequency")
plt.title("Histogram of a Random Sample from a Normal Distribution")
plt.legend()
# 带有回归直线的散点图与单变量直方图
mean, cov = [5, 10], [(1, .5), (.5, 1)]
data = np.random.multivariate_normal(mean, cov, 200)
data_frame = pd.DataFrame(data, columns=["x", "y"])
sns.jointplot(x="x", y="y", data=data_frame, kind="reg")\
.set_axis_labels("x", "y")
plt.suptitle("Joint Plot of Two Variables with Bivariate and Univariate Graphs")
# 成对变量之间的散点图与单变量直方图
iris = sns.load_dataset("iris")
sns.pairplot(iris)
# 按照某几个变量生成的箱线图
tips = sns.load_dataset("tips")
sns.factorplot(x="time", y="total_bill", hue="smoker",\
               col="day", data=tips, kind="box", size=4, aspect=.5)
# 带有bootstrap置信区间的线性回归模型
sns.lmplot(x="total_bill", y="tip", data=tips)
# 带有bootstrap置信区间的逻辑斯蒂回归模型
seaborn
tips["big_tip"] = (tips.tip / tips.total_bill) > .15
sns.lmplot(x="total_bill", y="big_tip", data=tips, logistic=True, y_jitter=.03)\
.set_axis_labels("Total Bill", "Big Tip")
plt.title("Logistic Regression of Big Tip vs. Total Bill")
plt.show()
savefig("seaborn_plots.png")

第一张统计图是使用 distplot 函数显示的一张直方图,如图 6-8 所示。这个示例中演示的设置包括数据封箱个数、是否显示高斯核密度估计(kde)、在支撑轴上显示地毯图、创建坐标轴标签和标题,以及为图例生成的标签。

图 6-8:seaborn 生成的直方图,数据来自于对正态分布的随机抽样

第二张统计图是使用 jointplot 函数显示两个变量的一张散点图,如图 6-9 所示,其中带有一条回归直线,并为每个变量生成一张直方图。

图 6-9:seaborn 生成的带有回归直线的散点图,以及两张直方图

第三张统计图是使用 pairplot 函数生成数据集中每两个变量之间的双变量散点图,并为每个变量生成一张直方图,如图 6-10 所示。

图 6-10:seaborn 生成的鸢尾花数据集中的双变量散点图和单变量直方图

第四张统计图是使用 factorplot 函数生成的箱线图,表示两个变量之间的关系,对于第三个变量的每一个值都有一张箱线图,并按另一个变量分类,如图 6-11 所示。

图 6-11:seaborn 生成的账单总数箱线图,按照星期几、每天中的时间和是否吸烟者进行分类

第五张统计图是使用 lmplot 函数生成的一张散点图和一个线性回归模型,并在回归直线周围显示了置信区间,如图 6-12 所示。

图 6-12:seaborn 生成的散点图和回归直线,表示小费数量和账单总数之间的关系

第六张统计图是使用 lmplot 函数为一个二值因变量生成的一个逻辑斯蒂回归模型,如图 6-13 所示。函数使用 y_jitter 参数使数据点在 1 和 0 处轻微振动,这样可以更清楚地看出数据点沿着 x 轴的聚集情况。

图 6-13 :seaborn 生成的逻辑斯蒂回归曲线,表示大额小费和账单总额之间的关系

这些示例让你知道了使用 seaborn 可以生成何种类型的统计图,但它们只是 seaborn 强大功能的冰山一角。你可以参考 seaborn 文档(http://stanford.edu/~mwaskom/software/seaborn/index.html),了解创建和设置统计图表的更多信息。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文