Seaborn是一个基于Matplotlib的数据可视化库,它提供了一个高级接口来绘制吸引人且信息丰富的统计图表。本文将学习如何使用Seaborn库创建基本的图表,例如散点图、直方图、条形图、箱线图和成对图。将使用名为Toyota Corolla的汽车数据集作为示例。
散点图用于展示两个或三个数据点之间的线性关系。使用Seaborn库创建的散点图如下所示:
plt.style.use("ggplot")
plt.figure(figsize=(8,6))
sns.regplot(x = cars_data["Age"], y = cars_data["Price"])
plt.show()
在这里,regplot代表回归图。默认情况下,fit_reg=True,它会估计并绘制一个回归模型,关联x和y变量。
如果想要在散点图中加入一个分类变量,例如按照燃油类型展示价格与车龄的关系,可以使用Seaborn库中的lmplot函数。
sns.lmplot(x='Age', y='Price', data=cars_data,
fit_reg=False,
hue='FuelType',
legend=True,
palette="Set1",height=6)
legend=True用于显示不同燃油类型的颜色分类,而palette参数用于设置颜色方案,这里使用"Set1"。
在Seaborn中,可以使用distplot函数绘制直方图,并传入想要包含的变量。默认情况下,直方图会包含核密度估计(kde):
plt.figure(figsize=(8,6))
sns.distplot(cars_data['Age'])
plt.show()
如果想要移除核密度估计,可以设置kde=False。
条形图用于展示分类变量。使用Seaborn的countplot函数可以很容易地绘制条形图。例如,可以绘制汽车燃油类型的条形图:
plt.figure(figsize=(8,6))
sns.countplot(x="FuelType", data=cars_data)
plt.show()
在y轴上,得到了汽车燃油类型的频率分布。
可以绘制两个变量之间的条形图,称为分组条形图。例如,可以绘制按自动档分类的燃油类型分布条形图:
plt.figure(figsize=(8,6))
sns.countplot(x="FuelType", data=cars_data,
hue="Automatic")
plt.show()
箱线图用于分析数据集的详细分布。可以绘制数据集中价格列的箱线图,以直观解释“五数概括”。五数概括包括最小值、最大值和三个四分位数(第一四分位数、中位数和第三四分位数)。
plt.figure(figsize=(8,6))
sns.boxplot(y=cars_data["Price"])
plt.show()
在这里,IQR是四分位距:IQR = Q3-Q1。超出须线的部分称为异常值。异常值或极端值位于1.5倍中位数值之外。
成对图用于绘制数据集中列之间的成对关系。它将为联合关系创建散点图,为单变量分布或关系创建直方图。成对图将显示数据集中所有不同变量之间的关系。在成对图中,可以传递hue参数。hue是想要计算成对图的参数。例如,可以将FuelType作为hue参数来绘制成对图。
sns.pairplot(cars_data, kind="scatter", hue="FuelType")
plt.show()
在这里,可以看到散点图和直方图。散点图是成对图的默认类型。当x轴和y轴是同一个变量时,会绘制直方图,这是一个单变量分布。
让在同一窗口中绘制箱线图和直方图。首先,需要将绘图窗口分成两部分。为此,可以使用plt.subplots:
f, (ax_box,ax_hist) = plt.subplots(2, gridspec_kw={"height_ratios":(.15,.85)})
f, (ax_box,ax_hist) = plt.subplots(2, gridspec_kw=
{"height_ratios":(.15,.85)})
sns.boxplot(cars_data["Price"], ax=ax_box)
sns.distplot(cars_data["Price"], ax=ax_hist, kde=False)
plt.show()