6.4 seaborn
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论