我用Python的Seaborn库,绘制了15个超好看图表!

58f71082599558ba083b3a3d6d3af9c1.gif

大家好,我是小F~

Seaborn是一个基于Python语言的数据可视化库,它能够创建高度吸引人的可视化图表。

在Matplotlib库的基础上,提供了更为简便的API和更为丰富的可视化函数,使得数据分析与可视化变得更加容易。

Seaborn的设计哲学是以美学为中心,致力于创建最佳的数据可视化。

同时也保持着与Python生态系统的高度兼容性,可以轻松集成到Python数据分析以及机器学习的工作流程中。

46f99cd47f7df4f40cced3dee464e428.png

今天,小F就给大家介绍如何使用Seaborn制作15种不同类型的可视化图表。

具体图表类型,包含条形图、散点图、直方图、折线图、小提琴图、箱线图、热力图、点图、密度图、计数图、分簇散点图、特征图、Facet Grid、联合分布图、分类图。

首先使用pip安装Seaborn。

pip install seaborn

Seaborn提供了一些内置的数据集,如iris、tips、dots、glue等。

4aa40d92b6e3efc9a2bf41b726e65530.png

你可以在GitHub上看到更多的数据集。

https://github.com/mwaskom/seaborn-data

这里我们使用的是Seaborn的Iris数据集。

Iris也称鸢尾花数据集,是一类多重变量分析的数据集。

通过花萼长度、花萼宽度、花瓣长度、花瓣宽度4个属性来预测鸢尾花属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

print('\n')
data = pd.read_csv('iris.csv')
print(data[10:15])

结果如下。

82f9af5e32481e47db32ade056925a7e.png

查看不同种类数量情况。

print(data['species'].value_counts())

结果如下。

46f69d26f89846e5fffac3670c0b8b59.png

01. 柱状图

柱状图通常被用于表示分类变量,它只显示平均值(或其他参数值)。

为了使用这个图,为x轴选择一个分类列(物种),为y轴选择一个数值列(花瓣长度)。

sns.barplot(x='species', y='petal_length', hue='species', data=data)
plt.show()

可以看到创建了一个每个分类列取平均值的图。

花瓣长度与物种间关系的条形图(基于鸢尾数据集)。

f51fdf95c5db5e21c03941e137ef8b42.png

02. 散点图

散点图是由几个数据点组成的图。

使用x轴表示花瓣长度,y轴表示数据集的萼片长度,制作散点图。

sns.scatterplot(x='petal_length', y='sepal_length', hue='species', style='species', s=90, data=data)
plt.show()

结果如下。

7595ddbf055b4259b42b0d96f6b4eace.png

在这里,我们看到不同物种的花瓣长度和萼片长度之间有很强的关系。

03. 直方图

直方图通常用于可视化单个变量的分布,不过也可用于比较两个或更多变量的分布。

除了直方图之外,KDE参数还可以用来显示核密度估计(KDE)。

这里使用鸢尾花数据集的萼片长度来制作直方图。

sns.histplot(x='sepal_length', kde=True, data=data)
plt.show()

结果如下。

f04cead669d3ac41c6624c55ddf4da1d.png

两个变量的直方图。

sns.histplot(x='sepal_length', kde=True, hue='species', data=data)
plt.show()

结果如下。

54b1c5886f3d2fa23ddc42a55f35c4b4.png

04. 折线图

折线图是一种通用的图表,可以用来可视化各种不同的关系。

该图表易于创建和分析,并且可以用于有效地交流数据。

在折线图中,每个数据点都是由直线连接。

这里在x轴上使用花瓣长度,在y轴上使用花瓣宽度。

sns.lineplot(x='petal_length', y='petal_width', data=data)
plt.show()

结果如下。

1a6a8c96f48a66fc26e415065ba09f02.png

05. 小提琴图

小提琴图表示数据的密度,类似于散点图,并像箱线图一样表示分类数据。

数据的密度越大的区域越胖。小提琴形状表示数据的核密度估计,形状在每个点的宽度表示该点的数据密度。

这里使用x轴表示物种,y轴表示花瓣长度。

sns.violinplot(x='species', y='petal_length', data=data, hue='species')
plt.show()

结果如下。

3243897ca54ac37ad87fbf3c794a2334.png

06. 箱线图

箱线图由一个箱形图和两个须状图组成。

它表示四分位数范围(IQR),即第一和第三四分位数之间的范围。中位数由框内的直线表示。

晶须从盒子边缘延伸到最小值和最大值的1.5倍IQR。

异常值是落在此范围之外的任何数据点,并单独显示。

这里使用x轴表示种数,y轴表示萼片长度。

sns.boxplot(x='species', y='sepal_length', data=data, hue='species')
plt.show()

结果如下。

607b8f0dc104db35eaab95d20f9f3bc8.png

07. 热力图

热力图是数据的二维可视化表示,使用颜色来显示变量的值。

热力图经常用于显示数据集中的各种变量的关联关系,使用corr方法来实现。

heat_corr = data.corr()
sns.heatmap(heat_corr, annot=True)
plt.show()

结果如下。

084abe6b1d328dbf2fc0bddfdf42f671.png

08. 点线图

点线图是一种统计图表,用于显示一组数据及其变异性的平均值或集中趋势。

点线图通常用于探索性数据分析,以快速可视化数据集的分布或比较多个数据集。

本例中的每个数据点表示为单个点,而水平线表示平均值。

sns.pointplot(x='species', y='petal_length', data=data, markers='^', color='g')
plt.show()

结果如下。

334d97f7cb17be9fe7ae2b9297a7461c.png

09. 密度图

密度图通过估计连续随机变量的概率函数来表示数据集的分布,也称为核密度估计(KDE)图。

sns.kdeplot(x='petal_length', data=data, hue='species', multiple='stack')
plt.show()

结果如下。

a41fe2fcc177859ea782b24ab39de037.png

上图可以清晰的看出花瓣长度与物种之间的关系。

还可以修改密度图的显示方式,和等高线有点像。

sns.kdeplot(x='petal_length', y='sepal_length', data=data, hue='species')
plt.show()

结果如下。

a65fc7eb6f92b250fc7920c3d210b2f9.png

10. 计数图

计数图是一种分类图,它显示了分类变量的每个类别中观测值的计数。

它本质上是一个柱状图,其中每个柱的高度代表特定类别的观测值的数量。

计算数据集中每个物种的样本总数。

sns.countplot(x='species', data=data)
plt.show()

结果如下。

1241a27063bab243bbb87afd902485ee.png

从上图可以看出,每个物种在数据集中包含相同数量的样本。

11. 分簇散点图

分簇散点图和条形图挺相似的。

不同之处在于,这些点会重叠出现,这样有助于更好地表示值的分布情况。

sns.swarmplot(x='sepal_width', y='species', data=data, hue='species', dodge=True, orient='h', size=8)
plt.show()

结果如下。

67efe182a2d660da622a67b91ddae1ea.png

在上图中,每个数据点表示为一个点,并且这些点的排列使得它们在分类轴上不会相互重叠。

在这里,所有萼片宽度数据点以不同的方式代表每个物种的一个点。

12. 特征图

特征图可视化了数据集中变量之间的两两关系。

创建了一个坐标轴网格,将所有数值数据点将在彼此之间创建一个图,在x轴上具有单列,y轴上具有单行。

对角线图是单变量分布图,它绘制了每列数据的边际分布。

sns.set(rc={"figure.figsize": (6, 3)})
sns.pairplot(data=data, hue='species')
plt.show()

结果如下。

2d7587c1a035b064d021f79cdb48522b.png

上图表示鸢尾花数据集中所有变量之间的关系。

13. FacetGrid

Seaborn中的FacetGrid函数将数据集的一个或多个分类变量作为输入,然后创建一个图表网格,每种类别变量的组合都有一个图表。

网格中的每个图都可以定制为不同类型的图,例如散点图、直方图或箱形图,具体取决于要可视化的数据。

在这里,制作了每个物种花瓣长度的图表。

g = sns.FacetGrid(data, col="species", height=4, hue='species')
g.map(sns.histplot, "petal_length")
plt.show()

结果如下。

550f98179956270864928c361cf809ad.png

14. 联合分布图

联合分布图将两个不同类型的图表组合在一个表中,展示两个变量之间的关系(二元关系)。

sns.jointplot(x="sepal_length", y="sepal_width", data=data,
              palette='Set2', hue='species')
plt.show()

结果如下。

af44ae36a50635f718921f3c28e45348.png

在上面的图表中,中间区域绘制了散点图,边侧则是密度图。

15. 分类图

cat图(分类图缩写)是Seaborn中的一种图表,可以用来可视化数据集中一个或多个分类变量与连续变量之间的关系。

它可用于显示分布、比较组或显示不同变量之间的关系。

sns.catplot(data=data, x="petal_length", y="species", kind="violin", color=".9", inner=None)
sns.swarmplot(data=data, x="petal_length", y="species", size=3)
plt.show()

结果如下。

d385e9d7b9df6d8cbf770000c0afde16.png

这里可以看出鸢尾数据集中花瓣长度与物种之间的关系。

好了,今天的分享到此就结束了~

Seaborn作为一个强大的可视化模块,在数据分析机器学习有很大的作用。

但其功能远不止上述内容,如果想更加深入了解,可以访问其官网地址或者中文文档。

万水千山总是情,点个 👍 行不行

推荐阅读

7f29539948f6161c91fa95fa95c4ef5b.jpeg

abf82a4f0d559ab4ac5e2e5e98836506.jpeg

4a81f0aca8f4ec29f6917d65fe0ab5ea.jpeg

···  END  ···

dc1cff06330a9cec9cb109cbd93eca51.jpeg

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于使用 Python 绘制漂亮的图表Seaborn 确实是一个不错的选择。Seaborn 是一个基于 Matplotlib 的 Python 可视化,它提供了更高层次的 API,使得绘图更加简单和美观。 下面是一个简单的例子,展示如何使用 Seaborn 绘制一个直方图: ```python import seaborn as sns import numpy as np # 生成随机数据 data = np.random.normal(size=1000) # 绘制直方图 sns.histplot(data) ``` 这里我们先使用 NumPy 生成了一组随机数据,然后使用 Seaborn 绘制了一个直方图。绘图的函数是 `sns.histplot()`,它会自动计算数据的统计信息,并绘制出直方图和核密度估计曲线。 除了直方图,Seaborn 还支持绘制多种图表,比如散点图、线图、箱线图等。下面是一个使用 Seaborn 绘制散点图的例子: ```python import seaborn as sns import pandas as pd # 读取数据 tips = pd.read_csv("tips.csv") # 绘制散点图 sns.scatterplot(data=tips, x="total_bill", y="tip", hue="sex") ``` 这里我们使用了 Seaborn 自带的 `tips` 数据集,绘制了一个散点图,横轴是账单总额,纵轴是小费,颜色编码是性别。通过这个例子可以看到,Seaborn 提供了丰富的参数和选项,能够满足各种不同的绘图需求。 除了 Seaborn,还有其他 Python 可视化,比如 Matplotlib、Plotly、Bokeh 等,每个都有自己的特点和优势。如果你对 Python 绘图感兴趣,可以多尝试不同的,找到最适合自己的那一个。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值